Birmingham's sixth defeat on the spin leaves them inside the bottom three, two points adrift of Barnsley who went down 2-1 to automatic promotion chasers Cardiff City.
The Bluebirds looked to be cruising to all three points thanks to goals from Callum Paterson and Marko Grujic either side of half time, but Swansea City loanee Oliver McBurnie maintained his decent form by pulling one back.
A fifth successive clean sheet may have evaded Cardiff, but they were still able to hold on for yet another win to keep them four points in front of the chasing pack.
Aston Villa are currently providing the biggest threat to the top two, and they remain in touching distance after overcoming bottom-placed Sunderland 3-0 at the Stadium of Light.
Another side well positioned to gatecrash the automatic promotion spots is Fulham, who extended their unbeaten run to 14 matches - winning 11 of those - with a straightforward 3-0 victory of their own over Sheffield United.
Aleksandar Mitrovic sent out a further message to parent club Newcastle United by notching another couple of goals, which mercurial playmaker Tom Cairney added to on the hour.
With the three teams directly above them all picking up maximum points, it once again proved to be a disappointing night for Derby County as their underwhelming 2018 continued with a 1-1 draw against Queens Park Rangers.
Andreas Weimann looked for so long to have won it with his goal shortly before half time, only for Massimo Luongo to snatch a share of the spoils for the mid-table hosts.
Bristol City also lost ground in the battle for a playoff spot, losing 2-1 at Preston North End to slip out of the top six, with their place taken by Middlesbrough.
Elsewhere, Burton Albion could not profit from some favourable results around them as they were defeated 2-0 by Brentford, while Hull City suffered a 2-1 loss at home to Millwall, who just about remain in the top-six picture.