Joe Mason struck just before half-time as Cardiff extended their lead at the top of the Championship to seven points with victory at Birmingham.
The hosts made the Bluebirds battle for the win as they pressed the league leaders throughout.
But Mason pounced on a mistake by home goalkeeper Jack Butland, who was unable to secure Craig Conway's shot.
The goal came against the run of play and Craig Bellamy's inspired performance helped Cardiff hold on.
Mason, who had been recalled to the starting line-up, scored for the fifth time this season when he capitalised on Butland deflecting Conway's shot into his path.
The absences of Marlon King, Nikola Zigic and Peter Lovenkrands did nothing to help the home cause, while Hayden Mullins withdrew in the warm-up, but Birmingham still made life difficult for the Bluebirds.
Despite looking the more threatening in the opening period, Birmingham could not create a clear-cut chance as Cardiff completed a rare double over them - the last was 46 years ago.
And when Cardiff's chance came, Mason took it to give them a fourth festive period win amid nine triumphs in their last 11 encounters.
The omens are now good for Cardiff to make the Premier League for the first time - each team that has led the Championship at this stage has reached the top flight.
The Blues, meanwhile, have two wins from their last 11 as they battle to stay clear of the relegation places only four points below them.
Ravel Morrison was a regular threat for the home side while Robert Hall and Nathan Redmond also troubled the Cardiff defence.
But Birmingham's plight was summed up when Mullins' stand-in, Callum Reilly, was forced off and replaced by Morgaro Gomis.
Cardiff's killer instinct came to the fore as Mason tapped home, a score that spurred their efforts after the break.
Bellamy came close to adding another and his influence was enough to help Cardiff stay in charge.
Substitute Rudy Gestede and skipper Mark Hudson headed over late on while David Marshall was steadfast in Cardiff's goal amid Birmingham's late bid to equalise.
Cardiff boss Malky Mackay said: "It was a tough team we played and we knew we had to battle and fight for everything we got.
"We are now seven points clear at the top, but it is just about making sure about the game you are in and keep chalking them off.
"It has been a tough period but we have the momentum and consistency which I am delighted about.
"We were without Andrew Taylor, who fell ill on the morning of the game. Simon Lappin came in and did a good job.
"To come away with the 10th clean sheet for the season was outstanding and we were very comfortable in the second half."
Birmingham City manager Lee Clark said: "Without a doubt we deserved something from the game. The goal we gave away was very unfortunate.
"Jack Butland saves the shot but then the ball hit him on the back of the head and then on the back of the heel and rolls straight to Joe Mason to tap it in.
"We played some excellent football. It is horrible because we are in a business where picking up is vitally important but all the performances collectively was very good against a team which is going to get promoted."
- 01 Butland
- 04 Caldwell
- 06 Davies
- 23 Spector
- 24 Packwood (Hancox - 77' )
- 30 Robinson Booked
- 12 Morrison
- 15 Elliott (Jervis - 70' Booked )
- 22 Redmond
- 33 Reilly (Gomis - 32' Booked )
- 29 Hall
- 13 Doyle
- 05 Pablo
- 27 Hancox
- 07 Burke
- 14 Gomis
- 38 Henry-Francis
- 20 Jervis
- 01 Marshall
- 05 Hudson
- 06 Turner
- 12 Connolly
- 11 Conway
- 13 Kim Bo-Kyung (Noone - 67' )
- 17 Gunnarsson
- 18 Mutch (Cowie - 51' )
- 24 Lappin
- 20 Mason (Gestede - 70' )
- 39 Bellamy
- 32 Lewis
- 02 McNaughton
- 08 Cowie
- 16 Noone
- 21 Ralls
- 15 Gestede
- 22 Helguson
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +3:59
Robert Hall takes a inswinging corner from the right by-line played to the near post, clearance made by Rudy Gestede.90:00 +1:47
Mitch Hancox produces a overhead kick left-footed shot from deep inside the area which goes wide of the left-hand post.90:00 +0:26
Curtis Davies challenges Craig Conway unfairly and gives away a free kick. David Marshall takes the indirect free kick.88:02
Free kick awarded for an unfair challenge on Jonathan Spector by Matthew Connolly. Robert Hall takes the direct free kick.86:57
Corner taken by Craig Noone played to the near post, Paul Robinson makes a clearance.86:30 Booking
Booking Booking for Morgaro Gomis.85:12
Craig Bellamy takes the inswinging corner, Header from deep inside the area by Mark Hudson goes over the bar.83:56
A cross is delivered by Craig Conway, Headed effort on goal by Rudy Gestede from just inside the box goes harmlessly over the goal.83:02
David Marshall takes the free kick.83:02 Booking
Booking The referee books Jake Jervis for unsporting behaviour.82:40
Unfair challenge on Don Cowie by Jake Jervis results in a free kick.81:38
Simon Lappin crosses the ball, clearance by Curtis Davies.78:00
Effort from a long way out by Craig Bellamy goes wide of the left-hand upright.76:01 Substitution
Substitution Will Packwood leaves the field to be replaced by Mitch Hancox.73:47
Craig Conway challenges Morgaro Gomis unfairly and gives away a free kick. Jack Butland restarts play with the free kick.71:02
Will Packwood crosses the ball, Ben Turner makes a clearance.69:03 Substitution
Substitution Rudy Gestede comes on in place of Joe Mason.69:03 Substitution
Substitution Jake Jervis comes on in place of Wade Elliott.68:19
Free kick awarded for a foul by Morgaro Gomis on Aron Gunnarsson. David Marshall takes the free kick.
Substitution Bo-Kyung Kim leaves the field to be replaced by Craig Noone.65:24
Robert Hall delivers the ball.59:43
Joe Mason concedes a free kick for a foul on Morgaro Gomis. Steven Caldwell restarts play with the free kick.54:52
Inswinging corner taken by Robert Hall, free kick awarded for an unfair challenge on Simon Lappin by Jonathan Spector. David Marshall takes the free kick.53:50
Foul by Craig Conway on Ravel Morrison, free kick awarded. Wade Elliott crosses the ball in from the free kick, David Marshall makes a save.52:17
Joe Mason is flagged offside by the assistant referee. Jack Butland takes the indirect free kick.51:45
The assistant referee signals for offside against Craig Bellamy. Jack Butland takes the indirect free kick.50:22
Matthew Connolly takes the free kick.50:22 Substitution
Substitution Jordon Mutch leaves the field to be replaced by Don Cowie.50:22 Booking
Booking Paul Robinson is given a yellow card.50:16
Unfair challenge on Craig Conway by Paul Robinson results in a free kick.48:04
A cross is delivered by Jonathan Spector.46:53
Mark Hudson concedes a free kick for a foul on Ravel Morrison. Wade Elliott delivers the ball from the free kick right-footed from left channel, Ben Turner manages to make a clearance.46:06
The ball is swung over by Aron Gunnarsson, Craig Conway takes a shot from 12 yards. Curtis Davies makes a clearance.45:01
The referee blows his whistle to start the second half.45:00 +1:59 Half time
Half Time The players leave the pitch at half time.45:00 +1:29
Free kick awarded for a foul by Morgaro Gomis on Bo-Kyung Kim. Indirect free kick taken by Craig Bellamy.40:44 Goal scored
Goal! - Joe Mason - Birmingham 0 - 1 Cardiff Joe Mason finds the net with a goal from close in low into the middle of the goal. Birmingham 0-1 Cardiff.40:04
Craig Conway takes a shot. Save by Jack Butland.38:14
Curtis Davies concedes a free kick for a foul on Joe Mason. Free kick taken by Craig Bellamy.35:40
Free kick awarded for a foul by Simon Lappin on Curtis Davies. Free kick crossed left-footed by Robert Hall, save made by David Marshall.32:58
Free kick awarded for an unfair challenge on Craig Conway by Wade Elliott. Craig Bellamy delivers the ball from the free kick right-footed from right wing, clearance by Steven Caldwell.32:31 Substitution
Substitution Morgaro Gomis replaces Callum Reilly.30:48
Jonathan Spector gives away a free kick for an unfair challenge on Jordon Mutch. Mark Hudson takes the indirect free kick.29:47
The referee blows for offside against Ravel Morrison. Free kick taken by David Marshall.27:15
Free kick awarded for an unfair challenge on Wade Elliott by Craig Conway. Paul Robinson restarts play with the free kick.25:39
Robert Hall takes a shot from just inside the penalty box which clears the crossbar.22:21
The ball is sent over by Craig Bellamy, clearance by Steven Caldwell.19:58
Nathan Redmond takes a shot. Save by David Marshall.18:02
Nathan Redmond takes a shot. Save by David Marshall.17:44
Jordon Mutch gives away a free kick for an unfair challenge on Will Packwood. Will Packwood restarts play with the free kick.16:36
Unfair challenge on Callum Reilly by Craig Bellamy results in a free kick. Jack Butland takes the indirect free kick.14:52
Aron Gunnarsson challenges Wade Elliott unfairly and gives away a free kick. Wade Elliott delivers the ball from the free kick right-footed from left channel, clearance made by Mark Hudson. Outswinging corner taken left-footed by Robert Hall, clearance by Jordon Mutch.13:24
Corner taken right-footed by Craig Bellamy, clearance made by Callum Reilly. Handball by Simon Lappin. Steven Caldwell takes the indirect free kick.12:20
Corner taken right-footed by Craig Bellamy from the left by-line, save by Jack Butland.9:56
Handball decision goes against Ravel Morrison. Indirect free kick taken by David Marshall.9:04
Robert Hall is ruled offside. David Marshall takes the free kick.6:37
Shot from outside the area by Wade Elliott misses to the left of the goal.5:52
The ball is swung over by Nathan Redmond, clearance by Ben Turner.5:25
Mark Hudson concedes a free kick for a foul on Ravel Morrison. Paul Robinson takes the free kick.4:14
Robert Hall crosses the ball, save made by David Marshall.1:41
Simon Lappin crosses the ball.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers