With Cork recording an eighth win on the trot, this win ensured the champions stay in second, six points adrift of the Leesiders.
McMillan struck either side of the break and also hit the woodwork twice.
Dundalk took control of the game in the opening quarter, enjoying plenty of possession, but the only chance of note was a Michael Duffy shot capably saved by Ciaran Gallagher.
The visitors almost took the lead on 26 minutes when a McMillan effort smacked the upright in an increasingly physical encounter on the notoriously heavy Finn Park surface.
The Lilywhites broke the deadlock on 34 minutes when Niclas Vemmelund floated in a great ball for McMillan to latch onto with a deft touch before firing past Ciaran Gallagher.
McMillan then headed against the bar as he met a Dean Massey free six minutes after the restart.
In-form McMillan pounced from close range on 54 minutes to make it 2-0 with his fourth goal of the season as he ran deep into the box to connect with a Conor Clifford cross.
Dundalk could have added more with Thomas Stewart, Michael Duffy, and Clifford all going close.
Dundalk inflicted the heaviest ever home league defeat on Harps when they knocked seven past the Donegal side without reply when they last met at Finn Park. The scoreline was much reduced this time around but the gulf in class was still evident.
Gallagher; McNulty, Cantwell, Coll, Harkin; Boyle, Bonner, Molloy, McAleer; McCourt Houston.
Dsane for McCourt (67 mins), Funston for Molloy (76 mins), Banda for Bonner (82 mins)
Rogers; Vemmelund, Gartland, Hoare, Massey; Shields; McGrath, Clifford, Stewart, Duffy; McMillan.
O’Donnell for Shields (85 mins), Mountney for Stewart (87 mins), Kilduff for McMillan (89 mns).
Paul Tuite (Dublin)