Blackburn Rovers slipped into the Championship relegation zone with a 3-2 defeat away to fellow strugglers Sheffield Wednesday.
Although they had led through Jordan Rhodes' early penalty, Jermaine Johnson scored twice for Wednesday, with his outstanding second in the 78th minute proving decisive.
Rhodes won and scored a 12th-minute penalty after being brought down by goalkeeper Chris Kirkland, but Johnson levelled eight minutes later and Leroy Lita gave Wednesday a 35th-minute lead from the spot after Johnson tumbled over in the area. Scott Dann rose to head in a 71st-minute equaliser but Johnson fired home from 25 yards to seal it late on.
Blackburn slip below Huddersfield, who were held to a 2-2 draw by Peterborough as Dwight Gale got a late equaliser for the visitors.
Neil Danns put the Terriers ahead with a scissor-kick in the 41st minute, and Murray Wallace restored their lead in the 69th minute after Lee Tomlin scored for the visitors on the counter-attack early in the second half. But just as it looked like Huddersfield would record a vital win, Gayle headed in an 86th-minute leveller.
At the top, Hull consolidated their place in the automatic promotion spots by edging out Middlesbrough 1-0, but it was hardly convincing with the only goal coming when visiting goalkeeper Jason Steele fumbled Robbie Brady's 62nd minute free-kick.
And the Tigers' day got better when Watford were held to a goalless draw by league leaders Cardiff at Vicarage Road. Troy Deeney went closest but his header was brilliantly saved by David Marshall. Cardiff are five points clear of Hull, while Watford trail them by three.
Fourth-placed Crystal Palace were held to a goalless draw by struggling Barnsley in a match most notable for the visitors wearing Palace's away kit due to a clash.
However, they remain three points clear of Nottingham Forest in fifth, with Billy Davies' side drawing 1-1 with Blackpool, coming from behind after the dismissal of Blackpool's Isaiah Osbourne.
Ludovic Sylvestre, who had already hit the bar, put Blackpool ahead with a curling shot in the 27th minute. But after Osbourne saw red, cynically sticking out a leg when already on the floor to bring down Greg Halford, Forest came back and levelled from the spot through Lewis McGugan after Chris Basham fouled Simon Cox.
Brighton and Leicester, scrapping over the final play-off spot, drew 1-1 on the south coast as Kazenga LuaLua snatched an 88th-minute leveller for the Seagulls to cancel out a Matty James strike.
Bolton moved to within two points of the top six with a 2-0 victory over Wolves, with both the goals coming early. David Ngog lashed home after just three minutes and Marcos Alonso got a second in the 10th minute.
Neil Warnock's departure failed to end Leeds' slide as they lost 2-1 at Charlton, although it took a Jonathan Obika goal five minutes into stoppage time to defeat them. Luke Varney had scored in the 81st minute to cancel out Johnnie Jackson's opener.
Birmingham and Millwall shared the spoils in a 1-1 draw, but the match was notable for some controversial decisions in the first half.
Millwall's fit-again winger Chris Taylor was at the centre of affairs. First he was booked for diving when it looked as though he was brought down by Paul Caddis for a penalty, but unbelievable scenes quickly followed as Taylor's goalbound shot was poked home by Richard Chaplow.
A stunned crowd watched on as the effort was flagged for offside before referee Keith Hill then awarded the goal after discussions with his assistant, only to change his mind once more and subsequently rule it out. Wes Thomas then gave Birmingham a 49th-minute lead, but Taylor had the final word with a 70th-minute equaliser.
Burnley came from behind to defeat rock-bottom Bristol City 3-1 at Turf Moor. The visitors took the lead against the run of play with a great solo goal from Albert Adomah but Jason Shackell bundled in an equaliser early in the second half and Chris McCann put them ahead after the hour mark.
Steven Davies missed a penalty for City in the 82nd minute after Joseph Mills fouled Adomah, and Martin Paterson made them pay with a third in the final minute.
A missed penalty also proved costly for Derby as they went down 1-0 to Ipswich at home, with Carlos Edwards scoring in injury time for the visitors after Jamie Ward missed from the spot late in the first half.