While Milan had their own agenda, Empoli are scrapping for their top-flight survival and in desperate need of ending a miserable run of form. Their plight could’ve been even worse when Yunus Musah forced a strong save from Devis Vasquez in the early stages.
Roberto D’Aversa’s men responded well, threatening an opener themselves beyond the half-hour mark when Lorenzo Colombo caught Mike Maignan off his line and attempted to chip him, but his effort agonisingly came back off the post.
Theo Hernandez fired wide moments before the break, but the Rossoneri’s struggles to create chances prompted Sergio Conceicao to make a triple change at the break.
His plans almost went up in smoke 10 minutes after the restart when Fikayo Tomori was sent off, earning a second yellow card for hauling Colombo down. Empoli’s numerical advantage was short-lived however, with Luca Marianucci’s yellow card upgraded following a VAR review to red for a petulant kick at Santiago Gimenez.
Milan wasted no time capitalising, opening the scoring just three minutes later through Rafael Leao, who powered a header home at the back post after being found by Christian Pulisic.
The points were all but sealed for the Rossoneri with 14 minutes remaining, as Gimenez opened his account for the club with a left-footed effort past Vasquez.
Empoli ultimately had no response, as Milan’s unbeaten run in Serie A reached three matches as they move within five points of the top-four.
The hosts, meanwhile, lost a fourth successive head-to-head without scoring to remain just a point clear of the drop zone having played a game more than most of their immediate rivals.