Wolves' lead at the top of the Championship now stands at just two points after they were beaten 1-0 by Reading at the Madejski Stadium.
The Royals took an early lead when Chris Armstrong swung in a cross which Wolves defender Neill Collins accidentally flicked into his own net.
Reading should have doubled their advantage just before the break but James Harper could only shoot straight at Wayne Hennessey from close range.
Collins' miserable night came to a premature end as he was sent off late on for foul and abusive language in injury-time.
Birmingham moved to within four points of Wolves as they overcame a stubborn Derby side 1-0 at St Andrews.
City struggled to break Derby down in a scrappy first half but Lee Carsley headed the winner just before the hour when he headed home a Hameur Bouazza cross.
Matthew Spring's first-half strike was enough to give Charlton their first win in 19 matches against Crystal Palace at The Valley.
Lloyd Sam found Spring in the box and he thumped a drive past Julian Speroni to give the hosts their first league win since October 4.
Swansea followed up last week's win over FA Cup holders Portsmouth by thumping fellow play-off hopefuls Preston 4-1 at the Liberty Stadium.
The Swans took the lead two minutes in through Jordi Gomez before Jason Scotland doubled the hosts' lead after 29 minutes.
Guillem Bauza added a third and Alan Tate struck late on to give Swansea before Chris Brown scored a consolation for Preston.
Marek Saganowski's late goal denied Bryan Gunn his first win as permanent Norwich boss as his side drew 2-2 with Southampton at Carrow Road.
Mark Fotheringham's first Norwich goal gave the Canaries the lead before Wesley Hoolahan doubled their advantage with a 35-yard strike.
Kayne McLaggon pulled one back for the Saints and the visitors snatched a point 12 minutes from time with Saganowski's header
Sheffield United's play-off hopes suffered a blow as they were beaten by Doncaster in the South Yorkshire derby at Bramall Lane thanks to a James O'Connor goal.
QPR leapfrogged Burnley into seventh as they beat Blackpool 3-0 at Bloomfield Road, with Heidar Helguson's double the highlight.
Helguson headed home Wayne Routledge's cross to put QPR ahead 17 minutes in and he doubled Rangers' advantage with a penalty just before the hour after Ian Evatt had fouled the striker in the box.
Hogan Ephraim's last-minute goal rounded things off for the west London side.
Nottingham Forest came from behind to beat 10-man Sheffield Wednesday 2-1 at the City Ground.
Jermaine Johnson picked up a Mark Beevers knock down to slot past Paul Smith and give the Owls the lead before Forest equalised through Nathan Tyson.
Wednesday striker Francis Jeffers was dismissed for a reckless challenge on Joe Heath and Forest made their numerical advantage count when Luke Chambers headed the winner with 15 minutes left.
Ipswich extended their unbeaten run to four matches as they beat Barnsley 2-1 at Oakwell.
Jon Stead drilled a low drive past Heinz Muller to break the deadlock after eight minutes before he added his second two minutes later with a fortunate deflection.
Daniel Bogdanovic marked his debut with a consolation goal for the Tykes early in the second half.
Michael McIndoe and Liam Fontaine were on target for Bristol City in the second half as they beat Plymouth 2-0 at Home Park while one goal from Jobi McAnuff and two from Tamas Priskin gave Watford a 3-0 home win against Burnley.