Andrew Keogh scored his first goal for Cardiff in injury time as they kept up the pressure on Championship leaders QPR with a last-gasp 2-1 win over Millwall.
Jay Bothroyd levelled for Millwall just before the half-hour after Scott Barron had given the hosts a 10th-minute lead.Millwall midfielder Liam Trotter was sent off for a foul on Darcy Blake before Peter Whittingham missed a glorious chance to restore the home side's lead from the penalty spot.
The match looked to be heading for a draw before Keogh nodded in Bothroyd's cross to give Cardiff the win in the 89th minute.
QPR hit three second-half goals against Doncaster to maintain their six-point lead at the top.
Neil Warnock's side laid siege to Doncaster's goal in the first period but could not find a way through until Kaspars Gorkss collected Akos Buzsaky's cross before firing past Neil Sullivan in the Rovers net.
Sullivan then brought Heidar Helguson down in the Doncaster box before Adel Taarabt converted from the spot. QPR's fourth straight victory was confirmed with three minutes to go when Gorkss headed home Taarabt's corner from six yards.
Watford moved up to third after Danny Graham's double helped condemn his former club Middlesbrough to a 3-1 defeat at Vicarage Road.
Graham took advantage of a weak David Wheater backpass to round the keeper and put Watford ahead before Jordon Mutch doubled the hosts' advantage in the 11th minute with a 20-yard half-volley.
Watford, who beat Millwall 6-1 away last weekend, added a third through Graham's six-yard tap-in in the 20th minute before Adrian Mariappa's late own goal provided Boro with a consolation.
Leeds fans came away from Elland Road the happier of the two sets of supporters as they gained the Yorkshire bragging rights with a 1-0 victory over Sheffield United in a bad-tempered encounter.
Bradley Johnson's six-yard strike gave Leeds the win before referee Anthony Taylor handed out two red cards late on - one to Leeds substitute Robert Snodgrass and the other to the Blades' Jamie Ward.
Ian Baraclough's first game in permanent charge at Scunthorpe ended with a creditable 1-1 draw with Ipswich. The Iron took the lead just before the half-hour when David Mirfin looped a header over Marton Fulop but Jaime Peters' second-half goal gave Roy Keane's side a point.
Derby ended their seven-match winless streak in emphatic style with a 5-0 hammering of Crystal Palace at Pride Park.
Derby took the lead in the 15th minute with a crisp finish from Alberto Bueno. Palace were reduced to 10 men when James Vaughan - who had a spell on loan at Derby last season - was sent off for a scything tackle on John Brayford. Kris Commons and Bueno struck again in the second half before Shefki Kuqi rounded off proceedings with a six-yard tap in against his former club.
Preston climbed off the foot of the table with a 2-1 win over Coventry thanks to goals from Billy Jones and Iain Hume, with Aron Gunnarsson grabbing the Sky Blues' goal on the hour.
Late strikes from Robert Koren and Tom Cairney gave Hull a 2-0 win at Norwich.
Swansea's wretched away form continued at the City Ground where Nottingham Forest beat Brendan Rodgers' team 3-1.
Forest went ahead in the 12th minute when Lewis McGugan scored from the spot after Dorus De Vries hauled down Dexter Blackstock in the box. McGugan's second and Radoslaw Majewski's low drive put the home side beyond reach while the Swans grabbed a late consolation through Cedric van der Gun.
Reading bounced back from last week's defeat at Middlesbrough by hammering Barnsley 3-0 at the Madejski Stadium. Jimmy Kebe, Ian Harte and Hal Robson-Kanu were all on target for the Royals in a match that remained goalless until the 78th minute.
Bristol City earned an important point at Turf Moor by holding out for a goalless draw with Burnley.