Lee Gregory cancelled out Junior Hoilett’s opener as Millwall and Cardiff played out a 1-1 draw on Friday night in the Sky Bet Championship reports Sky Sports.
Hoilett gave the Bluebirds the lead inside three minutes with a sweet strike but Gregory levelled it up just before the break.
Cardiff had thought they had found the winning goal in the closing stages when Sol Bamba acrobatically hooked the ball into the net but referee Keith Stroud had already controversially blown for a foul on Joe Bennett.
Tim Cahill made his second Millwall debut with two minutes left but he did not have the opportunity to create a fairy-tale moment on his homecoming.
The game took just two minutes to spark into life when Mahlon Romeo hacked down Hoilett on the left wing and picked up a booking for his troubles.
He lived to regret that caution moments later as Hoilett robbed Romeo off possession before driving at the heart of the backline. The Millwall defender had an opportunity to haul him down but could not risk the possibility of a second booking and Hoilett let fly with a rasping drive that swerved into the bottom corner.
Millwall took 20 minutes to get into their stride but went close when Ben Marshall's cross was controlled by Steve Morison before he lashed an effort that came back off the crossbar.
They did get the leveller their play deserved just before the break. Morison opened up space for Jed Wallace to cross from the right which was seized upon by Gregory, who fired home in dominant fashion.
The game settled down after the break but burst into life again when Bamba skilfully fired into the net but the celebrations were cut short as referee Stroud had already blown for a foul on Cardiff defender Bennett.
Millwall: Archer; Romeo, Hutchinson, Cooper, Meredith; Wallace, Tunnicliffe, Saville, Marshall (Onyedinma, 78); Morison, Gregory (Cahill, 90).
Subs not used: Martin, McLaughlin, Williams, Elliott, Shackell.
Cardiff City: Etheridge, Ecuele Manga, Morrison, Bamba, Bennett, Paterson, Grujic, Ralls, Hoilett, Mendez-Laing, Madine.
Greg Halford (for Grujic, 77)
Loic Damour (for Mendez-Laing, 78)
Kenneth Zohore (for Madine, 82)
Subs not used: Murphy, Peltier, Pilkington, J.Ward,
Referee: Keith Stroud