Full-time from the Cardiff City Stadium
Rudy Gestede grabbed an eighth-minute winner as Cardiff City maintained their position at the top of the Championship table - but only after being pushed all the way by battling Millwall.
Defeat was a bitter pill to swallow for Kenny Jackett's Lions as they did everything but score on their way to a second successive defeat.
"There was a lot creative going forward today, maybe more than we have for four or five games," said Jackett.
"Our response after their goal was very, very good. I thought Henderson led the line well and was unlucky not to score."
Boss Jackett made a trio of changes to the team beaten by Barnsley last weekend with midfielder Jimmy Abdou returning from compassionate leave to replace Josh Wright, Dany N'Guessan in for striker Chris Wood after he was recalled from his loan by West Brom, and Scott Malone handed the left wing berth with Liam Feeney dropping to the bench.
Cardiff came flying out of the traps, although what proved to be the decisive goal of the game after eight minutes had a stroke of fortune about it.
Malone was laying prostrate on the deck just inside his own half following a collision and referee Mark Halsey waved play on when he perhaps could have blown to allow the player to receive treatment. Instead, Craig Noone was able to take advantage of the extra space afforded him by the absence of Malone, who would have been the extra man covering left-back Shane Lowry, and he whipped in a cross that Gestede swept home from close range.
The Lions were forced to make an early change when Malone, still struggling following that early collision, was replaced by Feeney after 18 minutes.
Slowly but surely Jackett's men began to settle into their stride with a nice backheel by N'Guessan setting up James Henry, whose inviting delivery was gathered by keeper David Marshall.
Millwall started to ask questions of the home defence and were left to rue a number of missed opportunities in front of goal in the opening half.
Darius Henderson sent a glancing header from Liam Trotter's great cross straight into the hands of Marshall as the visitors upped the tempo.
A smart move down the left then saw Lowry's deep delivery met by Henderson, and this time his firm header looked destined for the back of the net only for Marshall to parry at full stretch. The ball fell for Henry three yards out, but at such pace that he had no time to take a touch, and instead lashed wildly over from a tight angle.
Henderson dragged a left-foot effort wide from 16 yards and a sublime piece of skill by Henry, in which he left two defenders trailing in his wake, ended with a crisp drive that flashed agonisingly wide of the post.
Marshall came to the rescue once more for Cardiff on the stroke of half-time when he brilliantly blocked a rasping Danny Shittu drive after a Henry corner had caused panic in the home rearguard.
However it was Cardiff who went close to doubling their tally just 28 seconds after the break. The irrepressible Craig Bellamy broke down the left and his cross was met by Noone, whose 18-yard screamer was brilliantly blocked by Abdou for a corner.
Peter Whittingham whipped a free-kick just over as Cardiff went close again, but the second-half settled into much the same pattern as the first, and back came Millwall creating chances of their own.
Henry failed to convert arguably the clearest opportunity of the lot on 55 minutes, firing wastefully over the bar after being played clean through by N'Guessan in a move started by Lowry deep in his own half.
N'Guessan then hit a snap shot from 18 yards which Marshall did well to hold low to his right and Henderson saw his looping header drop onto the roof of the net from another Henry delivery as Millwall turned the screw.
N'Guessan twice snatched at shots whilst in good positions as Jackett's men continued to prise and probe a Cardiff defence that had conceded a paltry eight goals in their previous 12 home games this season.
But for all their effort and endeavour, The Lions just could not find a way through and perhaps knew it was just never going to be their day in the final few seconds when right-back Adam Smith embarked on a fantastic run down the wing, but then ballooned his final cross way off target with what proved to be Millwall's last roll of the dice.
Marshall, McNaughton, Hudson, Turner, Taylor, Conway, Whittingham, Gunnarsson (Mutch, 45+2mins), Noone (Cowie,73mins), Gestede (Helguson, 78mins), Bellamy. Subs not used: Lewis, Cowie, Connolly, Kim, Mason.
Millwall: Forde, A.Smith, Lowry, Abdou, Shittu, Beevers, Malone (Feeney, 18mins), N'Guessan (Batt, 64mins), Trotter, Henderson, Henry. Subs: M.Taylor, J.Smith, Wright, Osborne, Dunne.
Booking: Trotter (15mins)