Udinese was lucky not to admit an early opener when a defensive error Tijjani Reijnders gave a golden chance to open the score in the first minute.
However, Milan's midfielder was unable to find a way along Maduka Okoye, who made an important stop to help his side to avoid the worst possible start.
Okoye's opposite song, Mike Maignan, had very little to do until he was called in action shortly after the half -hour marking and dives to the right to push away the powerful strike of Kingsley Ehizibue.
Just as it seemed that half of half would end aimlessly, Rafael Leao ended his six-game goal to break the impasse in the 42nd minute, to hit a right foot shot past Okoye after he was complied with by Youssouf Fofana.
Things quickly got worse for Udinese when Strahinja Pavlovic came up high in the box to go home the Inswing -Hoek of Christian Pulisic, leaving the hosts behind for the first time during the break in a Serie A home competition since December.
Despite the fact that he was in a strong position, Milan was worried at the start of the second half when goalkeeper Mike Maignan had to be stretched after a nasty collision with his teammate Alex Jimenez, where Marco Sportiello had to come from the bank to make his second competition at the appearance of the season.
The replacement keeper had very little to do, because Udinese offered very few signs of a fightingback before their miserable evening was exacerbated by two late Milan goals.
First Theo Hernandez was sent by Tammy Abraham by Tammy Abraham in the left flank, before he gave a fierce attempt past Okoye at the Near Post.
Reijnders then stepped on the hand to guide the ball home from the perfect pass from Leão, shortly before a potential fifth was abolished for offside.
While the ninth placed side brought them in four points of the top six, the hosts remain in 11th place after a fourth consecutive defeat.
Flash score Man of the match: Rafael Leao (AC Milan)
View all match statistics with flash score.
