Birmingham moved two points clear at the top of the Championship after an own goal from former City player Darren Purse meant Cardiff had to settle for a point in a 3-3 draw at Plymouth.
Steve Bruce's side won 2-0 against QPR at Loftus Road as Bruno N'Gotty headed in Gary McSheffrey's 23rd-minute free-kick. Nicklas Bendtner was sent off for a second booking but City doubled their lead with a 90th-minute goal from Cameron Jerome.
Cardiff looked well on course to hold on to top spot as they raced into a 3-0 lead away to Plymouth.
Former Newcastle forward Michael Chopra had a storming match, creating the Bluebirds' opener with a run and cross from the right which Steven Thompson turned in after seven minutes.
Chopra waltzed through the Argyle defence to add a second in the 29th minute and the game looked over when he added Cardiff's third early in the second half.
However, Plymouth pulled one back when Kevin McNaughton deflected Akos Buzsaky's shot into his own net in the 69th minute. Barry Hayles scrambled in a second for the Pilgrims (74) and Purse's 88th-minute own goal sealed an amazing comeback.
Norwich were denied the chance to go third as a last-minute goal forced them to settle for a 3-3 draw against Southend at Roots Hall.
The Canaries had not scored away from home in the Championship this season and fell behind to a well-taken Freddy Eastwood goal. They came storming back however as Robert Earnshaw first turned in a rebound after his initial effort was saved by Darryl Flahavan and volleyed in a second from Jurgen Colin's cross.
Dickson Etuhu headed in a third but the Shrimpers did not give in and Steven Hammell curled in a free-kick midway through the second half.
The hosts pressed forward and got their reward when Mark Gower made it 3-3 in the final minute.
Jay Bothroyd went from hero to villain as Wolves lost some ground, going down 1-0 at home to Derby.
Bothroyd scored Wolves' late winner at Leeds on Sunday but his penalty at Molineux tonight was saved by Rams goalkeeper Stephen Bywater after Michael Johnson handled in the box. Derby's winner came when Steve Howard headed home in the 34th minute after good work from Arturo Lupoli on the left.
Wolves' Black Country rivals West Brom were also beaten, in their case by a spectacular Patrick Agyemang goal at Preston.
Chris Sedgwick dribbled into the area and lost control of the ball but Agyemang, with his back to goal, managed to beat Pascal Zuberbuhler in the Baggies goal with a stunning overhead kick.
Colchester held Luton 1-1 at Kenilworth Road, Jamie Cureton scoring a route one equaliser in the 40th minute after Sam Parkin put the Hatters in front eight minutes earlier.
Burnley climbed the table with a come-from-behind 4-2 win over Barnsley at Turf Moor.
Michael McIndoe's brace appeared to have put the visitors well in command but Burnley bounced back through Jon Harley (42) and a second-half hat-trick from Gifton Noel-Williams was a treat for the Clarets fans.
Ipswich overcame Coventry 2-1 at Portman Road, Mark Noble (52) and Billy Clarke (85) scoring for the Tractor Boys.
Hull remain bottom despite a 1-0 win at Leicester as Michael Bridges scored the only goal in the 58th minute.
Sheffield Wednesday and Stoke drew 1-1 at Hillsborough, Chris Brunt's 40th-minute penalty cancelling out Martin Paterson's goal six minutes earlier.