Millwall and Ipswich Town played out a draw as both clubs gained a vital point in their battles to avoid relegation.
Liam Trotter volleyed wide for the hosts, Andy Keogh hit the top of the crossbar and Ipswich goalkeeper Scott Loach denied substitute Rob Hulse.
The visitors also had chances with David Forde saving from Luke Hyam's back-post volley and Michael Chopra heading over from six yards out.
Millwall nearly got a late winner but Shane Lowry's free-kick hit the post.
Struggling for goals
In Ipswich's last seven games, they have scored just five times and only conceded twice, while Millwall have now kept five successive clean sheets.
The result leaves Ipswich, who started the season with only one win in their first 13 league matches, in 17th position, three points clear of the Championship relegation zone.
Town are one point behind Millwall in 14th, although the Lions have at least one game in hand on every other side in the division.
Trotter began his career at Portman Road and nearly scored against his former club after only two minutes but his 25-yard volley went narrowly off target.
The Lions enjoyed the best of the first half and they thought they had taken the lead when Keogh converted from Jermaine Easter's left-wing cross, only for the goal to be ruled out for offside.
Keogh also hit the top of the crossbar with a deep cross as the FA Cup semi-finalists aimed to claim their fourth successive victory.
But Ipswich, themselves unbeaten in three games, came back into the match and nearly took a bizarre lead when Forde's poor clearance fell to Hyam, whose 50-yard lob was headed clear by Millwall defender Mark Beevers.
Town also had further opportunities but Forde blocked Hyam's volley from Frank Nouble's cross and Chopra, who has only scored one league goal in 2013, headed over following Aaron Cresswell's inswinging corner.
Ipswich have scored the least goals of any Championship side, but have now only conceded one goal in seven matches, while Millwall kept their fifth successive clean sheet.
However, there was nearly a late twist as Lowry's left-footed free-kick hit the post, before Easter missed a good chance to score an injury-time winner but fired over from close range.
Millwall boss Kenny Jackett:
"I felt that we had the better of the chances - Ipswich had a couple but we had more that were clear-cut.
"I felt today that we generally lacked width. Early in the game even though we passed the ball well, we lacked players that could go past people.
"I probably should have introduced Liam Feeney earlier on because he did have a positive effect when he came on."
Ipswich manager Mick McCarthy:
"It wasn't a good game - it was pretty poor with two teams in a relegation scrap, where we've been all season long and I think it's probably dawning on Millwall as well now.
"They're one point better off than us and the other teams around us have won so it's nervy.
"Easter hasn't made or broken us - if anything it's made us a bit worse off despite getting four points because the league's bonkers, just crazy."
Live Text Commentary
Full Time The referee blows his whistle to end the game.90:00 +3:32
Outswinging corner taken from the left by-line by Aaron Cresswell.90:00 +2:48
The assistant referee signals for offside against Jermaine Easter. Aaron Cresswell restarts play with the free kick.90:00 +0:30
Jermaine Easter produces a right-footed shot from deep inside the penalty area which goes wide of the right-hand post.85:44 Substitution
Substitution Jay Tabb comes on in place of Lee Martin.82:34
Frank Nouble takes a shot. Save made by David Forde. Corner from the right by-line taken by Aaron Cresswell, clearance made by Richard Chaplow.80:38 Substitution
Substitution Sean St. Ledger joins the action as a substitute, replacing Jack Smith.79:17
Shot on goal by Jermaine Easter from inside the box goes harmlessly over the target.78:42
Frank Nouble challenges Mark Beevers unfairly and gives away a free kick. Free kick taken by David Forde.78:02
Foul by Liam Trotter on Scott Loach, free kick awarded. Scott Loach takes the free kick.75:22
Luke Chambers concedes a free kick for a foul on Jermaine Easter. Strike comes in from Shane Lowry from the free kick.74:00
Direct free kick taken by Scott Loach.74:00 Substitution
Substitution Carlos Edwards is brought on as a substitute for Michael Chopra.74:00
Rob Hulse concedes a free kick for a foul on Tommy Smith.72:28
Inswinging corner taken by Shane Lowry, clearance made by Luke Chambers. Corner taken right-footed by Jack Smith from the left by-line, clearance made by Richard Stearman.69:54
Scott Loach takes the free kick.69:54 Substitution
Substitution Liam Feeney comes on in place of Andy Keogh.69:54
Rob Hulse gives away a free kick for an unfair challenge on Luke Chambers.68:35
Effort from just outside the box by Jermaine Easter goes over the bar.64:45
Strike on goal comes in from Aaron Cresswell from the free kick. Aaron Cresswell takes the outswinging corner, Liam Trotter manages to make a clearance.
Booking Liam Trotter is shown a yellow card.64:35
Liam Trotter challenges Lee Martin unfairly and gives away a free kick.63:53
Frank Nouble challenges Mark Beevers unfairly and gives away a free kick. Free kick taken by David Forde.63:06
Free kick awarded for an unfair challenge on Richard Stearman by Richard Chaplow. Scott Loach takes the free kick.59:40
Jay Emmanuel-Thomas takes a shot. Save by David Forde. Effort from deep inside the area by Frank Nouble clears the bar.59:08
Free kick awarded for a foul by Richard Chaplow on Richard Stearman. Luke Chambers restarts play with the free kick.57:39
Rob Hulse is flagged offside by the assistant referee. Free kick taken by Scott Loach.55:53
Unfair challenge on Aaron Cresswell by Alan Dunne results in a free kick. Aaron Cresswell crosses the ball in from the free kick, Rob Hulse makes a clearance. Corner taken left-footed by Aaron Cresswell from the left by-line, Close range headed effort by Michael Chopra clears the crossbar.55:08
Liam Trotter has shot on goal from just outside the box which goes wide of the right-hand upright.54:16
Shane Lowry takes the inswinging corner, clearance made by Luke Chambers.52:26
Rob Hulse takes a shot. Save by Scott Loach.51:36
Unfair challenge on Jermaine Easter by Guirane N'Daw results in a free kick. Jack Smith restarts play with the free kick.50:48
Liam Trotter concedes a free kick for a foul on Luke Chambers. Scott Loach takes the direct free kick.49:57
Direct free kick taken by Alan Dunne.49:57 Booking
Booking The referee shows Guirane N'Daw a yellow card.49:30
Unfair challenge on Jack Smith by Guirane N'Daw results in a free kick.48:10
Inswinging corner taken by Jack Smith, Guirane N'Daw manages to make a clearance.46:58
The referee blows for offside. Scott Loach restarts play with the free kick.45:01
The match restarts for the second half.45:01 Substitution
Substitution (Millwall) makes a substitution, with Rob Hulse coming on for John Marquis.45:00 +3:26 Half time
Half Time The match has reached half-time.45:00 +1:46
The official flags Lee Martin offside. David Forde takes the indirect free kick.44:01
Direct free kick taken by Shane Lowry.44:01 Booking
Booking Luke Hyam is shown a yellow card for unsporting behaviour.43:52
John Marquis fouled by Luke Hyam, the ref awards a free kick.42:41
Unfair challenge on Shane Lowry by Michael Chopra results in a free kick. Free kick taken by Mark Beevers.41:00
Tommy Smith challenges John Marquis unfairly and gives away a free kick. The free kick is swung in right-footed by Richard Chaplow.40:14
Frank Nouble challenges Jack Smith unfairly and gives away a free kick. Jack Smith takes the direct free kick.38:37
Luke Hyam takes a shot. Fantastic save by David Forde.37:10
Foul by Shane Lowry on Richard Stearman, free kick awarded. The free kick is delivered left-footed by Aaron Cresswell from right wing, save made by David Forde.35:25
Free kick awarded for an unfair challenge on Mark Beevers by Frank Nouble. David Forde takes the free kick.33:10
Foul by Aaron Cresswell on Alan Dunne, free kick awarded. Richard Chaplow crosses the ball from the free kick right-footed from right wing, Richard Stearman makes a clearance.32:22
Frank Nouble challenges Danny Shittu unfairly and gives away a free kick. Direct free kick taken by David Forde.31:37
Danny Shittu gives away a free kick for an unfair challenge on Jay Emmanuel-Thomas. Aaron Cresswell crosses the ball from the free kick left-footed from right channel, Alan Dunne manages to make a clearance.29:45
Guirane N'Daw handles the ball and concedes a free kick. David Forde takes the free kick.27:30
Foul by Tommy Smith on Richard Chaplow, free kick awarded. Richard Chaplow takes the free kick.22:34
The official flags John Marquis offside. Free kick taken by Scott Loach.21:05
Inswinging corner taken right-footed by Richard Chaplow from the left by-line to the near post, clearance by Jay Emmanuel-Thomas. Inswinging corner taken right-footed by Richard Chaplow.19:46
The official flags John Marquis offside. Luke Chambers restarts play with the free kick.17:51
Michael Chopra gives away a free kick for an unfair challenge on Mark Beevers. Mark Beevers takes the free kick.15:50
Guirane N'Daw is penalised for a handball. Shane Lowry takes the indirect free kick.14:39
Foul by Mark Beevers on Frank Nouble, free kick awarded. Aaron Cresswell crosses the ball in from the free kick, clearance by Liam Trotter.10:32
Foul by John Marquis on Luke Chambers, free kick awarded. Free kick taken by Luke Chambers.9:02
Free kick awarded for an unfair challenge on Liam Trotter by Luke Hyam. Shane Lowry takes the free kick.7:36
Outswinging corner taken right-footed by Richard Chaplow, John Marquis challenges Scott Loach unfairly and gives away a free kick. Scott Loach takes the free kick.5:55
Direct free kick taken by Scott Loach.5:55 Booking
Booking John Marquis goes into the referee's book for unsporting behaviour.5:48
Foul by John Marquis on Richard Stearman, free kick awarded.5:19
Michael Chopra gives away a free kick for an unfair challenge on Mark Beevers. Free kick taken by David Forde.5:01
The assistant referee flags for offside against Andy Keogh. Scott Loach restarts play with the free kick.3:34
Direct free kick taken by Scott Loach.3:34 Booking
Booking Richard Chaplow receives a caution for unsporting behaviour.3:17
Richard Chaplow gives away a free kick for an unfair challenge on Richard Stearman.2:16
Jay Emmanuel-Thomas challenges Jermaine Easter unfairly and gives away a free kick. Shane Lowry takes the free kick.1:44
Liam Trotter takes a shot and went wide left of the target.0:00
The match has kicked off.
Live data and text provided by our data suppliers