There was controversy in the latter stages though as Cardiff, who are now two points off second-placed Derby County, had a goal disallowed when the referee decided against playing the advantage inside the Millwall box.
It was also a special night for Tim Cahill as the Australian appeared as a late substitute for his second Millwall debut.
Cardiff took the lead in the fourth minute of the match when Hoilett robbed Mahlon Romeo of the ball in a dangerous area before finding the bottom corner with a brilliant strike from outside the box.
Millwall had to wait until the 23rd minute to create a chance of real note, and it almost brought the equaliser as Steve Morison turned against the crossbar from inside the Cardiff box.
Morison was the player causing the away side problems, and the Millwall captain tested Neil Etheridge with a couple of strikes just before the 30-minute mark at The Den.
The home side were pressing though, and their equaliser arrived in the 40th minute when Gregory found the back of the net with a brilliant effort following a low cross from Jed Wallace.
Marshall tested Etheridge with a low strike in the 56th minute as Millwall looked to score their second, and it was the home side pressing as the second period continued to gather pace.
Etheridge was again called into action to keep out an effort from Wallace in the 65th minute.
Sol Bamba had the ball in the back of the Millwall net in the 83rd minute, but the goal was disallowed as the referee had blown for a Cardiff free kick moments before the centre-back's overhead effort found the bottom corner.
The visitors pressed for a winner in the latter stages, with Callum Paterson twice coming close with headers - the second of which was cleared off the line in the 87th minute.
Cahill came off the Millwall bench in the 90th minute, but it was Cardiff that had the best opportunity in the final stages as Paterson fired wide from a dangerous area in the third minute of additional time.
MILLWALL (4-4-2): Archer; Romeo, Hutchinson, Cooper, Meredith; Wallace, Tunnicliffe, Saville, Marshall (Onyedinma 79'); Morison, Gregory (Cahill 90')
CARDIFF (3-4-3): Etheridge; Manga, Morrison, Bamba; Paterson, Grujic (Halford 77'), Ralls, Bennett; Hoilett, Madine (Zohore 82'), Mendez-Laing (Damour 78') body check tags ::