Cardiff extended their lead to seven points at the top of the Championship table with their first victory at Birmingham in 46 years.
Recalled striker Joe Mason scored the only goal of the game in the 41st minute, following up from close range after Jack Butland's parried save from Craig Conway had taken a fortuitous bounce.
Cardiff, now with nine wins in their last 11 games, entered the new year holding a five-point advantage at the summit and knowing the team leading the pile at the same stage in each of the last seven seasons has been promoted.
"It has been a tough period but we have momentum and consistency," said manager Malky Mackay.
"To come away with the 10th clean sheet for the season was outstanding and we were very comfortable in the second half."
Despite a creditable performance from Birmingham, they have won just twice in their last 11 games and are four points above the relegation zone with big names in danger of being sold to ease the club's financial struggles.
The hosts started with no out-and-out striker on the pitch due to severe injury and suspension problems which worsened in the pre-match warm-up when midfielder Hayden Mullins pulled out.
The opening quarter was lively, Birmingham's Nathan Redmond testing David Marshall from the edge of the penalty area in the 20th minute.
Yet further injury misery arrived for Birmingham manager Lee Clark just after the half-hour mark as Callum Reilly, a late replacement for Mullins, was also forced off. The move disrupted the team's rhythm, and Cardiff took the lead in the 41st minute.
Conway's strike from long range was parried downwards by Butland and the ball took an unfortunate bounce off his arm before Mason tapped in. Clark said: "We deserved something from the game. The goal we gave away was very unfortunate. It is horrible all the performances were very good, against a team which is going to get promoted.
"The only point I made to the players was that in the second half we didn't pull the trigger as we tried to walk the ball into the net."
Birmingham City Butland, Packwood (Hancox, 77), Caldwell, Davies, Robinson, Hall, Spector, Reilly (Gomis, 32), Elliott (Jervis, 70), Redmond, Morrison. Substitutes not used Doyle, Ibanez, Burke, Gomis, Jervis, Henry-Francis.
Cardiff City Marshall, Connolly, Hudson, Turner, Lappin, Conway, Gunnarsson, Mutch (Cowie, 51), Kim (Noone, 67), Mason (Gestede, 70), Bellamy. Substitutes not used Lewis, McNaughton, Ralls, Helguson.
Referee R Madley (West Yorkshire).
- More about:
- Cardiff City Fc