Second-half goals from Peter Whittingham and Craig Noone gave Cardiff their first away win of the season at Millwall.
Whittingham had a first-half free-kick disallowed before he broke the deadlock with a superb 20-yard effort on 53 minutes.
Two minutes later Noone opened his account with a well taken goal from close range.
Millwall's James Henry saw his first-half free-kick saved by David Marshall.
Defeat at The Den leaves Kenny Jackett's side fourth from bottom of the Championship while Cardiff remain fifth, a point behind leaders Blackburn Rovers.
The victory was Cardiff's third successive win but their evening was marred by an injury to Nicky Maynard, who was stretchered off in the second half.
Despite losing 4-1 at Hull City, Millwall's side showed only one change with Alan Dunne in for the injured Paul Robinson.
Cardiff boss Malky Mackay also made a single change with Aron Gunnarsson replacing fellow Icelander Heidar Helguson while Craig Bellamy was rested.
Looking to make amends for the defeat at Hull, the home side started brightly.
James Henry's shot was blocked by Andrew Taylor before Nadjim Abdou's effort from inside the box was well saved by Marshall.
But Cardiff slowly got to grips with the game and they had the ball in the back of the net on 20 minutes when Whittingham's free-kick beat Maik Taylor.
Millwall v Cardiff facts
Prior to the match, Cardiff had only registered one win in 12 league matches against the Lions - a 2-1 win in September 2010 at Cardiff City Stadium
But Whittingham was denied his fifth goal of the season as his effort was disallowed after referee Simon Hooper ruled that Gunnarsson had infringed in the build-up to the free kick.
Jordon Mutch and Maynard both saw efforts go wide while at the other end Karleigh Osborne went close.
And Cardiff keeper Marshall was forced to parry Henry's free-kick as Millwall finished a goalless first half strongly.
The deadlock was broken by Cardiff seven minutes after the interval and it was Whittingham who finally scored in spectacular fashion.
Cardiff's leading scorer found the top corner with a curled effort from 20 yards after receiving the ball from Noone.
Within two minutes the visitors had doubled their lead when Tommy Smith played in Noone and the former Brighton man fired past Taylor for his first Cardiff goal.
Cardiff were dealt a blow when Maynard suffered what appeared to be a serious knee injury which resulted in the ex-West Ham player being stretchered off.
Smith twice went close to extending Cardiff's lead while Noone's shot from the edge of the area was saved by Taylor.
Millwall introduced new loan signing Chris Wood during the second half but apart from a long-range Henry effort they could not prevent Cardiff from securing their first away win of the season.
Cardiff City manager Malky Mackay:
"This is a tough place to come. I've never had an easy game here and for us to score two goals again and keep another clean sheet away from home I was delighted with.
"I thought we scored a goal early in the first half, the free-kick. I could see nothing wrong with it.
"But it didn't unsettle us and we kept going and I thought second half we certainly came out playing some good stuff.
"I think the two pieces of quality calmed everything down and really settled the game."
- 33 M Taylor
- 02 Dunne Booked
- 12 Lowry Booked
- 27 Osborne
- 28 Malone
- 04 Wright (C Taylor - 57' )
- 06 Trotter
- 14 Henry (Batt - 79' )
- 26 Abdou
- 07 Henderson (Wood - 57' )
- 20 Keogh
- 01 Forde
- 03 Shittu
- 24 Goodman
- 08 Racon
- 19 C Taylor
- 11 Batt
- 39 Wood
- 01 Marshall
- 02 McNaughton Booked
- 03 Taylor
- 05 Hudson
- 12 Connolly
- 07 Whittingham
- 16 Noone (Kim Bo-Kyung - 80' )
- 17 Gunnarsson
- 18 Mutch
- 14 Smith Booked
- 23 Maynard (Helguson - 67' )
- 32 Lewis
- 31 Nugent
- 08 Cowie
- 13 Kim Bo-Kyung
- 09 Velikonja
- 20 Mason
- 22 Helguson
Live Text Commentary
Full Time The referee blows his whistle to end the game.89:14
Free kick awarded for a foul by Chris Taylor on Jordon Mutch. Peter Whittingham takes the indirect free kick.88:36
Free kick awarded for a foul by Shane Lowry on Heidar Helguson. Indirect free kick taken by Peter Whittingham.87:51
Bo-Kyung Kim handles the ball and concedes a free kick. Scott Malone takes the indirect free kick.87:03
Inswinging corner taken by Scott Malone, Chris Taylor takes a shot. Blocked by Mark Hudson.85:19
Inswinging corner taken by Scott Malone, Andy Keogh challenges Mark Hudson unfairly and gives away a free kick. David Marshall restarts play with the free kick.83:57
Mark Hudson gives away a free kick for an unfair challenge on Andy Keogh. Scott Malone takes the free kick.80:56
Chris Taylor concedes a free kick for a foul on Jordon Mutch. Peter Whittingham takes the free kick.79:16 Substitution
Substitution Bo-Kyung Kim is brought on as a substitute for Craig Noone.78:51 Substitution
Substitution James Henry leaves the field to be replaced by Shaun Batt.76:46
Inswinging corner taken right-footed by James Henry from the left by-line to the near post.76:15
Corner taken by James Henry, Mark Hudson manages to make a clearance.75:57
Chris Taylor has a drilled shot. Blocked by Aron Gunnarsson.73:10
Free kick taken by Shane Lowry.73:10 Booking
Booking Booking for Kevin McNaughton.72:40
Chris Taylor fouled by Kevin McNaughton, the ref awards a free kick.71:43
The referee blows for offside against Andy Keogh. David Marshall takes the free kick.69:27
Craig Noone takes a shot. Maik Taylor makes a save.68:39
Corner taken by Peter Whittingham from the left by-line, Shot by Tommy Smith from 18 yards. Scott Malone gets a block in.68:23
Shot by Tommy Smith. Shane Lowry gets a block in.
James Henry takes the indirect free kick.66:03 Substitution
Substitution Heidar Helguson comes on in place of Nicky Maynard.66:03 Booking
Booking Tommy Smith receives a caution for unsporting behaviour.65:18
Free kick awarded for a foul by Aron Gunnarsson on Chris Taylor.63:28
Nadjim Abdou takes a shot. Blocked by Peter Whittingham.62:27
Jordon Mutch gives away a free kick for an unfair challenge on Chris Taylor. Indirect free kick taken by Alan Dunne.61:13
Andy Keogh fouled by Peter Whittingham, the ref awards a free kick. Maik Taylor takes the indirect free kick.60:42
Shot from outside the area by Jordon Mutch misses to the left of the goal.60:11
Foul by Karleigh Osborne on Jordon Mutch, free kick awarded. Indirect free kick taken by Peter Whittingham.59:18
Free kick awarded for an unfair challenge on Chris Taylor by Tommy Smith. Scott Malone restarts play with the free kick.56:41 Substitution
Substitution Chris Wood is brought on as a substitute for Darius Henderson.56:41 Substitution
Substitution Chris Taylor replaces Josh Wright.54:10
Tommy Smith provided the assist for the goal.54:10 Goal scored
Goal! - Craig Noone - Millwall 0 - 2 Cardiff Craig Noone gets on the score sheet with a goal from close range to the bottom right corner of the goal. Millwall 0-2 Cardiff.53:28
Darius Henderson takes a shot. Mark Hudson gets a block in.52:06
The assist for the goal came from Craig Noone.52:06 Goal scored
Goal! - Peter Whittingham - Millwall 0 - 1 Cardiff Peter Whittingham finds the back of the net with a goal from just outside the area to the top left corner of the goal. Millwall 0-1 Cardiff.49:38
Shot by Craig Noone from deep inside the penalty area misses to the right of the target.48:33
Peter Whittingham restarts play with the free kick.48:33 Booking
Booking Shane Lowry receives a yellow card.47:01
Foul by Shane Lowry on Nicky Maynard, free kick awarded.47:01 Booking
Booking Alan Dunne is shown a yellow card for unsporting behaviour.46:37
Unfair challenge on Craig Noone by Alan Dunne results in a free kick. The free kick is delivered right-footed by Peter Whittingham from left channel.45:01
The match restarts for the second half.45:00 +2:06 Half time
Half Time The whistle is blown to end the first half.45:00 +0:52
Free kick awarded for a foul by Jordon Mutch on Shane Lowry. Free kick taken by Shane Lowry.45:00 +0:05
Andy Keogh takes a shot. Matthew Connolly gets a block in.41:09
Craig Noone is flagged offside by the assistant referee. Indirect free kick taken by Maik Taylor.40:53
Free kick awarded for a foul by Nadjim Abdou on Peter Whittingham. Peter Whittingham restarts play with the free kick.39:49
Free kick awarded for a foul by Aron Gunnarsson on Liam Trotter. Josh Wright takes the free kick.38:55
Darius Henderson gives away a free kick for an unfair challenge on David Marshall. Indirect free kick taken by David Marshall.38:18
Darius Henderson fouled by Craig Noone, the ref awards a free kick. Scott Malone restarts play with the free kick.37:18
Matthew Connolly gives away a free kick for an unfair challenge on Andy Keogh. James Henry restarts play with the free kick.36:04
Karleigh Osborne produces a right-footed shot from the edge of the box and misses to the right of the goal.35:37
Scott Malone decides to take the corner short.32:17
Scott Malone produces a left-footed shot from just outside the penalty box that misses to the left of the goal.29:03
The referee blows for offside. David Marshall takes the free kick.27:15
Nicky Maynard has a shot on goal from outside the box which misses left.26:05
Header by Jordon Mutch from deep inside the penalty area misses to the left of the target.24:17
Unfair challenge on Nicky Maynard by Karleigh Osborne results in a free kick. Andrew Taylor restarts play with the free kick.22:56
Foul by Aron Gunnarsson on Nadjim Abdou, free kick awarded. Karleigh Osborne restarts play with the free kick.20:54
Free kick awarded for an unfair challenge on Shane Lowry by Aron Gunnarsson. Maik Taylor takes the indirect free kick.19:17
Liam Trotter concedes a free kick for a foul on Tommy Smith. Peter Whittingham produces a shot on goal direct from the free kick,18:04
Shot on goal by Liam Trotter from inside the box goes harmlessly over the target.16:04
Short corner taken by Aron Gunnarsson.13:39
Outswinging corner taken by Craig Noone.12:09
Nadjim Abdou takes a shot. Save by David Marshall.11:42
James Henry takes a shot. Matthew Connolly gets a block in.9:56
Inswinging corner taken left-footed by Peter Whittingham from the right by-line, fantastic save by Maik Taylor.7:23
Free kick awarded for an unfair challenge on Andrew Taylor by Liam Trotter. Indirect free kick taken by David Marshall.7:04
Andy Keogh takes a shot. Blocked by Matthew Connolly.3:59
Corner taken by James Henry from the left by-line, clearance made by Craig Noone.2:27
Darius Henderson gives away a free kick for an unfair challenge on Aron Gunnarsson. David Marshall takes the indirect free kick.0:00
The game begins.
Live data and text provided by our data suppliers