Championship leaders QPR were stunned by rock-bottom Scunthorpe as the hosts came from behind to win 4-1 at Glanford Park.
Rangers striker Rob Hulse nodded his side ahead seven minutes in from Wayne Routledge's cross but Joe Garner headed the Iron level before the half was out and three minutes after the re-start he made it 2-1 with a well-taken finish. Michael O'Connor and Mark Duffy then added second-half gloss to the scoreline.
Third-placed Cardiff put in a spirited display to win 3-1 at Doncaster as Jason Koumas came on from the bench to score twice at the death. The Welsh outfit took the lead through Chris Burke, but James Coppinger netted a 78th minute equaliser for Rovers before Koumas struck in the final minute and deep into stoppage time.
Leeds had the chance to move up a place from fifth but went down 3-2 away to Millwall. James Henry (24) and Liam Trotter (30) put the Londoners 2-0 up. Luciano Becchio (51) reduced their lead but Steve Morison's 62nd-minute effort ensured Andy O'Brien's injury-time goal meant little.
A thriller at the City Ground saw sixth-placed Reading edge hosts Nottingham Forest 4-3. Ian Harte's left boot gave Reading the lead before Kris Boyd levelled for seventh-placed Forest from the penalty spot. Robert Earnshaw gave the Reds the lead early in the second half with Jem Karacan making it 2-2 three minutes later.
Jimmy Kebe (62) then put Reading back in front only for Lewis McGugan's penalty to make it 3-3 with two minutes left. However, Luke Chambers sliced into his own net to gift the Royals a massive win and even Shane Long's subsequent missed penalty made little difference.
At the bottom, Sheffield United remain headed for League One as they were beaten 2-1 at home to Middlesbrough. Matthew Bates had put Boro ahead but the Blades levelled through Matthew Lowton before the half was out. However, Marvin Emnes was in the right place at the right time to slam home a winner for the Teessiders in the 89th minute.
Preston looked to be set to give their survival hopes a shot in the arm only to draw 1-1 with Portsmouth. Phil Brown's second-bottom side led through Iain Hume's first-half strike only for Greg Halford to rescue a point for the south-coast hosts.
Josh Carson's double condemned struggling Crystal Palace to a 2-1 loss away to Ipswich. Carson scored in the 38th and 66th minutes to put the hosts 2-0 up and Patrick McCarthy's 73rd-minute effort was not enough to inspire a comeback.
Hull's made it 15 away games unbeaten with a 2-1 win away to Watford, while Robbie Savage's late first-half penalty helped struggling Derby to a 2-2 draw at home to Coventry. Elsewhere Diomansy Kamara scored on his home debut as Leicester enjoyed a 4-0 rout at home to Burnley, and Barnsley came from a goal down to beat Bristol City 4-2.
Copyright (c) PA Sport 2009, All Rights Reserved.