Southampton came from behind to rescue a 1-1 draw at 10-man West Ham and prevent Sam Allardyce's side pulling clear at the top of the Championship.
Jos Hooiveld scored a 75th-minute equaliser at Upton Park to keep the visitors just one point behind their opponents. West Ham played with 10 men since the 18th minute when Matt Taylor was dismissed for a clash with Billy Sharp after the Saints striker had conceded a penalty with a foul on Mark Noble.
Noble himself then dispatched the spot-kick low into the net, but the Hammers could not held on as the visitors eventually made the extra man count.
Cardiff beat Peterborough 3-1 in the Welsh capital to go third and move to within three points of Southampton, while Blackpool won 3-1 at relegation-threatened Doncaster to sit one place and one point further back.
Cardiff scored three times in seven first half minutes to kill off Posh before the break. Peter Whittingham fired home in the first in the 34th minute, Rudy Gestede added a second and Haris Vuckic, on loan from Newcastle, netted his first for the club to make it three. Paul Taylor pulled one back at the death for the visitors, but it was far too little too late.
Blackpool climbed into fourth after Gary Taylor-Fletcher scored twice in the first half against Doncaster to set Ian Holloway's side on their way to a 3-1 win before El-Hadji Diouf gave the hosts hope from the penalty spot two minutes before the break.
But Nouha Dicko sealed the points with a third in the 72nd minute as Rovers dropped to the foot of the table.
Birmingham dropped to fifth as they were held to a goalless draw at home to Hull.
Reading replaced Hull in the final play-off place with a 1-0 win at Derby, Noel Hunt on target just after the hour mark.
Middlesbrough boosted their top-six hopes with a win at home to struggling Nottingham Forest.
Marvin Emnes put the hosts in front on the stroke of half-time and Lukas Jutkiewicz doubled their lead a minute after the break. Substitute Joel Lynch halved the deficit, but the visitors could not find an unlikely equaliser.
David Nugent scored twice, but Leicester still went down 3-2 at Watford. The former England international netted in the 11th and 18th minutes to turn the game on its head after Adrian Mariappa's early opener.
But the Foxes were pegged back by Sean Murray's leveller just after the half-hour mark and Craig Forsyth won it for the hosts 10 minutes from time.
Cash-strapped Portsmouth had little relief from their off-field problems as they were beaten 1-0 by Ipswich at Fratton Park. Michael Chopra's early goal sunk the crisis-hit club.
Leeds and Brighton slipped further out of the play-off picture with disappointing results.
Managerless Leeds conceded an injury-time winner as they went down 2-1 at Coventry. Gary McSheffrey scored twice from the spot either side of a Ross McCormack equaliser as Coventry moved off the bottom to within six points of safety.
Brighton needed an 88th-minute leveller from Kazenga LuaLua two minutes after he came on to draw 2-2 at home to Millwall. Andy Keogh and Liam Feeney had twice put the Lions ahead either side of a first Brighton equaliser from Sam Vokes.
Brett Pitman scored twice, including a 90th-minute equaliser, as Bristol City came from 2-0 down to draw 2-2 at home to Crystal Palace. Wilfried Zaha and Darren Ambrose with a penalty had put Palace in control.
Elsewhere, Burnley beat Barnsley 2-0 thanks to goals from Jay Rodriguez and Charlie Austin.