Rudy Gestede's early goal was enough to see off visitors Millwall and restore Cardiff's five-point lead at the top of the Championship.
The Frenchman proved the wisdom of starting him in place of Heider Helguson with a poacher's strike, sliding in to meet Craig Noone's cross.
Darius Henderson nearly gave Millwall an immediate reply but his fine header was well saved.
Craig Bellamy could have made it safe for Cardiff but lobbed over the bar.
Cardiff already knew that they would end 2012 as Championship leaders, but the narrow win over the Lions restored their healthy five-point lead after Hull City had beaten Leeds United in the day's early kick-off.
The club that has topped the table at the end of a calendar year has gone on to win promotion to the Premier League in each of the last seven seasons.
Cardiff have suffered repeat heartache in the play-offs but the long-suffering Bluebirds fans can go into 2013 with quiet confidence.
While Millwall have managed just a point from their last three games, Kenny Jackett's side remain in touching distance of the play-off places.
Cardiff in contrast now go to Birmingham on New Year's Day seeking a fourth win out of four in the busy holiday period.
DID YOU KNOW?
- The club leading the Championship at the end of a calendar year has gone on to win promotion to the Premier League in each of the last seven seasons, with Ipswich Town the last side not to do so after being in that position in 2004/05.
Malky Mackay's side can then look forward to a FA Cup third-round trip to trip on 5 January to Macclesfield Town, after the Blue Square Bet Premier side won their replay against Barrow on Saturday.
Peter Whittingham nearly capped his 250th league appearance for Cardiff with an early goal but saw his shot deflected over the bar.
But the Bluebirds did not have to wait long for the opener in a flowing seventh-minute move sparked by Whittingham's flick out to the wing.
Noone collected the ball and jinked his way past Shane Lowry to pick out Gestede, who got across the front of his marker to deflect the ball into the Millwall net.
Cardiff's lead was only kept intact thanks to a fine save from David Marshall, who flung himself to claw away Henderson's goal-bound header.
Millwall goalkeeper David Forde was also in fine fettle, denying Mark Hudson from a corner when the Cardiff defender was given too much time and space in the area.
Bellamy had been to the fore of Cardiff's efforts in a bright first half but after the break missed a gilt-edged opportunity to take the game out of Millwall's reach.
The Wales striker surged through on Forde but his attempted lob sailed over the crossbar as well as the relieved Millwall keeper.
That chance apart, and a cheeky long-range effort from Hudson from near the halfway line, Cardiff were subdued in the second half.
Millwall prodded and probed but were largely limited to pot-shots at the home goal and Marshall was rarely called on to extend himself.
- 01 Marshall
- 02 McNaughton
- 03 Taylor
- 05 Hudson
- 06 Turner
- 07 Whittingham
- 11 Conway Booked
- 16 Noone (Cowie - 73' )
- 17 Gunnarsson (Mutch - 45' )
- 15 Gestede (Helguson - 77' )
- 39 Bellamy
- 32 Lewis
- 12 Connolly
- 08 Cowie
- 13 Kim Bo-Kyung
- 18 Mutch
- 20 Mason
- 22 Helguson
- 01 Forde
- 03 Shittu
- 12 Lowry
- 16 Beevers
- 25 Smith
- 28 Malone (Feeney - 18' )
- 06 Trotter Booked
- 14 Henry
- 26 Abdou
- 07 Henderson
- 22 N'Guessan (Batt - 64' )
- 33 M Taylor
- 02 Dunne
- 21 Smith
- 27 Osborne
- 04 Wright
- 15 Feeney
- 11 Batt
Live Text Commentary
Full Time The referee blows for the end of the match.90:00 +2:04
Centre by Adam Smith.89:32
Unfair challenge on Heidar Helguson by Shane Lowry results in a free kick. Direct free kick taken by Mark Hudson.85:13
James Henry produces a cross, free kick awarded for a foul by Darius Henderson on Mark Hudson. Free kick taken by David Marshall.82:52
James Henry sends in a cross, free kick awarded for an unfair challenge on Kevin McNaughton by Shaun Batt. David Marshall takes the direct free kick.82:33
The ball is crossed by Craig Conway, clearance by Mark Beevers.82:24
A cross is delivered by Craig Conway, clearance made by Mark Beevers.82:03
Liam Feeney delivers the ball, clearance by Andrew Taylor.79:44
Danny Shittu gives away a free kick for an unfair challenge on Heidar Helguson. The free kick is swung in right-footed by Craig Bellamy.78:51
Craig Bellamy decides to take a short corner, The ball is crossed by Craig Conway, clearance by Shaun Batt.78:08
James Henry is penalised for handball and concedes a free kick. Peter Whittingham takes the direct free kick.77:59
A cross is delivered by Craig Bellamy, Shane Lowry makes a clearance.76:19
Free kick taken by David Marshall.76:19 Substitution
Substitution Rudy Gestede leaves the field to be replaced by Heidar Helguson.76:19
James Henry gives away a free kick for an unfair challenge on Craig Conway.74:12
Free kick awarded for an unfair challenge on Kevin McNaughton by Shaun Batt. Peter Whittingham takes the direct free kick.72:05
Corner taken by Craig Bellamy, save by David Forde.72:05 Substitution
Substitution Craig Noone leaves the field to be replaced by Don Cowie.70:55
Craig Noone takes a shot. David Forde makes a save.70:42
The ball is sent over by James Henry, clearance by Peter Whittingham.
Mark Hudson takes a shot. Save by David Forde.66:58
The referee blows for offside against Craig Bellamy. David Forde restarts play with the free kick.65:29
Free kick awarded for a foul by Danny Shittu on Rudy Gestede. Direct free kick taken by David Marshall.65:04
Corner taken right-footed by James Henry to the near post, Jordon Mutch manages to make a clearance.63:31
James Henry has a direct shot on goal from the free kick, save by David Marshall.63:31 Substitution
Substitution (Millwall) makes a substitution, with Shaun Batt coming on for Dany N'Guessan.63:31
Free kick awarded for an unfair challenge on James Henry by Craig Noone.63:16
Craig Conway produces a cross, David Forde makes a save.62:44
Craig Bellamy produces a right-footed shot from inside the area that clears the bar.62:01
Effort from close in by Dany N'Guessan goes wide left of the target.61:42
The ball is crossed by Andrew Taylor, save by David Forde.60:30
Jordon Mutch challenges Liam Feeney unfairly and gives away a free kick. Liam Feeney takes the direct free kick.57:58
The ball is crossed by James Henry, Header from deep inside the area by Darius Henderson goes over the bar.56:28
Dany N'Guessan takes a shot. Save by David Marshall.55:09
Shot on goal by James Henry from just inside the area clears the crossbar.54:54
Jordon Mutch takes a shot. Save by David Forde.52:29
James Henry has an effort at goal from just inside the box that misses to the right of the goal.50:48
Liam Feeney delivers the ball, Andrew Taylor makes a clearance.50:15
Foul by Shane Lowry on Craig Noone, free kick awarded. Craig Noone takes the free kick.46:29
Mark Beevers gives away a free kick for an unfair challenge on Craig Noone. Peter Whittingham has a direct shot on goal from the free kick.45:41
Corner taken by Craig Bellamy from the left by-line, save by David Forde.45:17
Craig Bellamy delivers the ball, Jordon Mutch takes a shot. Mark Beevers gets a block in.45:01
The match restarts for the second half.45:00 +3:20 Half time
Half Time The match has reached half-time.45:00 +2:04
Corner taken by James Henry from the right by-line played to the near post, Andrew Taylor manages to make a clearance. Danny Shittu takes a shot. David Marshall makes a save.45:00 +2:04 Substitution
Substitution Aron Gunnarsson goes off and Jordon Mutch comes on.45:00 +1:47
A cross is delivered by James Henry, Kevin McNaughton makes a clearance.45:00 +0:59
The ball is crossed by Craig Conway, save made by David Forde.44:46
Liam Feeney crosses the ball.43:52
Free kick awarded for an unfair challenge on Ben Turner by Darius Henderson. David Marshall takes the direct free kick.42:07
Foul by Mark Hudson on Adam Smith, free kick awarded. David Forde takes the free kick.41:51
Mark Hudson takes a shot. Save made by David Forde.41:15
Corner taken by Craig Bellamy from the left by-line played to the near post, clearance made by Dany N'Guessan.40:57
Craig Bellamy takes a shot. Liam Trotter gets a block in.40:26
Free kick awarded for an unfair challenge on Craig Noone by Mark Beevers. Peter Whittingham takes the direct free kick.37:18
Free kick crossed right-footed by James Henry, clearance made by Ben Turner. Shane Lowry takes a shot. Mark Hudson gets a block in.37:18 Booking
Booking Craig Conway is cautioned by the ref for unsporting behaviour.36:53
Craig Conway challenges Adam Smith unfairly and gives away a free kick.36:14
Shot by Craig Noone from just outside the area goes over the net.34:50
A cross is delivered by Craig Noone, Mark Beevers makes a clearance.34:39
The ball is crossed by Craig Bellamy, Mark Beevers makes a clearance.34:15
Craig Conway takes a shot. Blocked by Danny Shittu.33:41
James Henry produces a right-footed shot from outside the penalty box and misses wide left of the target.31:29
James Henry crosses the ball.30:36
A cross is delivered by Craig Bellamy, save made by David Forde.30:01
The referee blows for offside against Darius Henderson. Indirect free kick taken by David Marshall.29:03
Craig Conway gives away a free kick for an unfair challenge on Adam Smith. James Henry restarts play with the free kick.27:56
Effort from outside the penalty box by Darius Henderson goes wide right of the goal.27:30
The referee blows for offside. David Forde restarts play with the free kick.26:34
Corner taken right-footed by James Henry, save made by David Marshall.26:23
The ball is crossed by James Henry, Aron Gunnarsson makes a clearance.25:35
Shot by Craig Conway from deep inside the penalty area misses wide to the left of the target.25:23
Craig Noone produces a cross, Danny Shittu manages to make a clearance.23:59
The ball is sent over by Shane Lowry, Darius Henderson takes a shot. David Marshall makes a save. James Henry produces a right-footed shot from deep inside the six-yard box which goes wide of the right-hand upright.22:55
The ball is swung over by Liam Trotter, Darius Henderson takes a shot. Save by David Marshall.22:04
Foul by Ben Turner on Darius Henderson, free kick awarded. James Henry crosses the ball from the free kick right-footed from right wing, clearance by Rudy Gestede.21:28
The ball is swung over by Craig Noone.20:44
The ball is swung over by James Henry, David Marshall makes a save.20:03
Free kick awarded for an unfair challenge on Andrew Taylor by Dany N'Guessan. David Marshall restarts play with the free kick.18:52
The ball is swung over by James Henry, Mark Hudson manages to make a clearance.17:42
Shane Lowry takes the free kick.17:42 Substitution
Substitution Liam Feeney joins the action as a substitute, replacing Scott Malone.17:42
Craig Bellamy is adjudged to have handled the ball.16:15
The ball is crossed by Craig Bellamy, save by David Forde.15:33
Corner taken by Peter Whittingham from the right by-line, save by David Forde.14:20 Booking
Booking The referee shows Liam Trotter a yellow card for unsporting behaviour.14:17
Free kick awarded for a foul by Liam Trotter on Craig Noone. Peter Whittingham shoots direct from the free kick, Liam Trotter gets a block in.13:59
Craig Bellamy takes a shot. Blocked by Shane Lowry.7:04
Assist on the goal came from Craig Noone.7:04 Goal scored
Goal! - Rudy Gestede - Cardiff 1 - 0 Millwall Rudy Gestede finds the net with a goal from inside the six-yard box to the bottom left corner of the goal. Cardiff 1-0 Millwall.5:56
Craig Conway concedes a free kick for a foul on Adam Smith. Free kick taken by James Henry.4:02
Peter Whittingham delivers a pass corner to short, clearance made by Shane Lowry.3:38
Peter Whittingham takes a shot. Shane Lowry gets a block in.2:29
James Henry crosses the ball, Close range header by Adam Smith goes wide of the left-hand upright.2:17
The ball is sent over by James Henry, Mark Hudson makes a clearance.2:02
Craig Conway crosses the ball, clearance by Adam Smith.1:50
The ball is swung over by Andrew Taylor, clearance made by Mark Beevers.1:34
Centre by Aron Gunnarsson, Mark Beevers makes a clearance.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers