Udinese were fortunate not to concede an early opener when a defensive mistake gave Tijjani Reijnders a golden chance to open the scoring in the first minute.
However, the Milan midfielder was unable to find a way past Maduka Okoye, who made an important stop to help his side avoid the worst possible start.
Okoye’s opposite number, Mike Maignan, had very little to do until he was called into action shortly after the half-hour mark, diving to his right to push away Kingsley Ehizibue’s powerful strike.
Just as it seemed the half would finish goalless, Rafael Leao ended his six-game goal drought to break the deadlock in the 42nd minute, whipping a right-foot shot beyond Okoye after being teed up by Youssouf Fofana.
Matters quickly got worse for Udinese when Strahinja Pavlovic rose high in the box to head home Christian Pulisic’s inswinging corner, leaving the hosts trailing at the break for the first time in a Serie A home game since December.

Despite being in a strong position, Milan were left concerned at the start of the second half when goalkeeper Mike Maignan had to be stretchered off following a nasty collision with his teammate Alex Jimenez, requiring Marco Sportiello to come off the bench to make his second league appearance of the season.
The substitute goalkeeper had very little to do as Udinese offered very few signs of a fightback before their miserable evening was compounded by two late Milan goals.
First, Theo Hernandez was sent racing down the left flank and into the box by Tammy Abraham’s first-time pass, before he lashed a fierce effort past Okoye at the near post.
Reijnders then got in on the act to guide the ball home from Leão’s clipped pass, shortly before a potential fifth was chalked off for offside.
While the ninth-placed side moved them to within four points of the top six, the hosts stay in 11th following a fourth consecutive defeat.
Flashscore Man of the Match: Rafael Leao (AC Milan)