Dyer fired the hosts in front with a 12th-minute volley, and two goals in two minutes early in the second half by Vardy clinched the victory and took Leicester three points clear at the top of the table.
It was the Foxes’ seventh home win of the season and ended Millwall’s run of success against them. The Lions have done the double over Leicester for the last two seasons.
Matty James and Ignasi Miquel, substitutes in the win at Ipswich, kept their places in Leicester’s line-up and Anthony Knockaert returned after a one-match ban.
Millwall were without the suspended Nick Bailey and the injured Liam Trotter while Martyn Waghorn, on loan from the Foxes was ineligible to play.
Leicester made a nervous start against a side that has won on three of their last four visits to the ground.
Scott McDonald was given plenty of time and space to fire in a third-minute shot but it flew well wide as Millwall pressed in the early stages.
However, the Foxes settled down and grabbed the initiative with a well worked and splendidly taken goal. Marcin Wasilewski sent Danny Drinkwater clear down the right and his excellent cross was volleyed home by Dyer.
It was just the lift Leicester needed and they took control of the game with Millwall goalkeeper David Forde forced into some fine saves to keep them in the match.
He pulled off a stunning stop to keep out a shot from the lively Knockaert in the 14th minute and then denied Dyer two minutes later this time from a header.
Another superb move cut through the Millwall defence in the 22nd minute. Knockaert put Dyer away down the left and the jet-heeled winger raced clear and unleashed a shot that Forde tipped round the near post at full stretch.
David Nugent had a shot deflected for a corner as City’s pace on the break continued to create trouble for the visitors.
Millwall briefly came into the game with a sequence of four successive corners but were fortunate to be only one goal down at half-time.
Striker Steve Morison replaced Martyn Woolford at the start of the second half as Millwall looked to fight back, but those hopes were crushed with two goals in quick succession from Vardy.
His blistering pace brought him his first in the 53rd minute. He collected a throw out from Kasper Schmeichel inside his own half and raced away before beating the advancing Forde with a cool finish.
Two minutes later he seized on a poor header back by Mark Beevers to go round Forde and slot in his sixth goal of the season.
The Foxes were now rampant and could have had a fourth goal when Vardy set up Nugent whose shot was well saved by Forde.
In the 64th minute in a rare breakaway Morison hit the bar with a header from Lee Martin’s cross. It was Millwall’s first effort on target in the match.
The Foxes remained on top and could have added to their score with Paul Konchesky and Chris Wood both going close in the closing stages.