Birmingham hauled themselves out of the relegation zone and left Sunderland further in trouble at the wrong end of the Sky Bet Championship with a 3-1 win at St Andrew's.
David Davis put the home side ahead after 28 minutes, and it was 2-0 just before half-time when Jeremie Boga headed in from close range.
On 55 minutes, Sam Gallagher added a third before Bryan Oviedo scored a consolation for Sunderland with seven minutes left.
Birmingham moved up to 20th, while Sunderland slipped to second bottom.
At the other end of the table, Derby missed the chance to close the gap on leaders Wolves as they were held to a goalless draw at Millwall.
Veteran Australia international Tim Cahill, who left Millwall almost 14 years ago to join Everton, was paraded to home fans after sealing a return to the club until the end of the season.
The Rams could have snatched victory late on, but a goal from Ikechi Anya was ruled out for offside.
Robert Snodgrass scored a 90th-minute winner to give in-form Aston Villa a 1-0 win at Sheffield United.
Scotland midfielder Snodgrass curled in a left-footed effort from the edge of the penalty area to snatch all three points.
Villa moved up to third following a fifth straight victory, now only a point behind Derby.
The Blades, meanwhile, are seventh and two points off the top six.
Middlesbrough and Sheffield Wednesday also battled through a goalless draw at the Riverside, which did little for the home side's hopes of making up ground on the top six.
Preston, though, moved to just three points adrift of sixth-placed Fulham after a 3-0 win at Nottingham Forest.
North End went ahead after 35 minutes through Billy Bodin, who netted his first goal since moving from Bristol Rovers.
Tom Barkhuizen headed in a second on the hour and Daniel Johnson wrapped things up from the penalty spot after 83 minutes.
Reading eased the pressure on boss Jaap Stam with a comfortable 3-1 win at struggling Burton, where Jon Dadi Bodvarsson scored twice.
The Royals, who had been without a win in eight Championship games, were ahead after 20 minutes through Iceland forward Bodvarsson.
Burton drew level early in the second half following a penalty from Lucas Akins.
Reading swiftly got themselves back in front through Wales international Chris Gunter after 57 minutes. Bodvarsson wrapped up the points with a third goal for the visitors after 68 minutes.
It finished 0-0 between Hull and Leeds, which continued the winless Championship runs of both Yorkshire clubs.