Two late penalties gave Rickie Lambert a fourth hat-trick of the season and kept Southampton on top of the table with a 3-2 victory over Millwall.
The leaders were in danger of falling to their first defeat in ten matches with five minutes remaining, trailing 2-1 against a Millwall side who have not won at home since Boxing Day.
But Paul Robinson, whose volley put Millwall ahead after Jose Fonte's own goal had cancelled out Lambert's opener, fouled the striker in the area for his first spot-kick and three minutes later Alan Dunne was adjudged to have handled and Lambert helped himself to another treble.
Reading also maintained their promotion charge with their ninth win in ten league matches as two superb second-half goals from Jem Karacan helped account for Barnsley in a 4-0 victory at Oakwell.
Brian McDermott's side had won eight games on the trot before drawing at Doncaster in midweek, but two goals in as many minutes from Jobi McAnuff and Karacan at the start of the second half got them back on the winning trail before their dominance was confirmed with further efforts from Karacan and Jason Roberts.
Loan defender Danny Collins scored a vital last-minute equaliser to earn West Ham what could prove to be a vital 1-1 draw at Leeds United, as they extended their unbeaten run to eight games.
When Luciano Becchio nodded Leeds ahead with seven minutes to go, the promotion picture was not looking too favourable for the Hammers, with top two rivals Southampton and Reading both winning, but, right on cue, Collins rose the highest to head in a Mark Noble corner and peg Leeds back in an act of damage limitation for Sam Allardyce's men, who are now five points off the lead and three points shy of second.
Birmingham marked their 50th match of a long season with a welcome 3-0 victory that saw them leapfrog promotion rivals Middlesbrough and move back up to fourth.
Much was owed to winger Chris Burke, who claimed two assists to take his tally to 13 this term - the highest of any Championship player. The Scot's 11th-minute cross set up Nikola Zigic, whose low header produced his ninth goal of the season and set the hosts on their way to a first win in six games in all competitions since losing their 15-match unbeaten record.
Burke then set up Marlon King for a well-taken strike on the hour before man of the match Keith Fahey capped a marauding run with a composed finish three minutes later.
Kevin Phillips claimed a goal in each half as Blackpool reignited their play-off bid with a 3-1 win against ten-man Brighton.
Joe Mattock headed the visitors into an early lead from Vincente's corner, but centre-back Ian Evatt joined the Seasiders attack in the 37th minute to level matters and Phillips' brace then secured all three points. Brighton saw Gonzalo Jara sent off in the second half.
Aaron Cresswell crashed in a winner five minutes from time as Ipswich recorded their fourth successive home win by beating Peterborough 3-2 in a pulsating contest that saw three goals in the final 13 minutes.
Gareth Roberts' first goal for Derby piled the misery on his former club Doncaster, whose survival hopes were dealt a blow with a 2-1 home defeat.
Roberts, who joined the Rams from Rovers in May 2010, doubled Derby's lead ten minutes into the second half after Theo Robinson had put the visitors ahead in the 13th minute. El-Hadji Diouf pulled a goal back for Doncaster with 23 minutes remaining but Dean Saunders' side could not save their five-match unbeaten streak.
The result saw Doncaster slip four points adrift of fourth-bottom Bristol City after their 0-0 draw at Portsmouth, and they also fell behind Coventry on goal difference after they too played out a 0-0 draw in their game at Watford.
Hull made it 11 games unbeaten but were frustrated by a resilient Crystal Palace outfit in a 0-0 draw at Selhurst Park.