Rodrigo Becao scored a second-half header as Udinese inflicted a 1-0 Serie A defeat on AC Milan in head coach Marco Giampaolo's first competitive game with the Rossoneri.
Milan started without any of their new signings and looked devoid of attacking ideas for the majority of Sunday's match at Dacia Arena, where they fell to Becao's only goal of the game 72 minutes in.
Giampaolo's visitors failed to register an attempt on target in Udine, and Milan's Gianluigi Donnarumma had been the busier of the two goalkeepers before the breakthrough moment in a contest that contained few clear-cut opportunities.
A first league defeat in five matches to Udinese means a losing start for Giampaolo, whose decision to omit each of his side's new signings backfired.
Milan's Alessio Romagnoli flicked the ball wide from a promising position and Udinese's Kevin Lasagna miscued a shot into the stands following a poor clearance from Donnarumma in the only openings of a quiet first half.
The biggest talking point before the interval came in stoppage time as Milan's Samu Castillejo appeared to deflect a cross with his arm, but VAR adjudged that the contact was made outside the box and no penalty was given.
Udinese's Rolando Mandragora fired in the game's first shot on target with 49 minutes played and Seko Fofana was the next to test Donnarumma with a curled strike a couple of minutes later.
Donnarumma was becoming increasingly busy as he was also required to keep out Mato Jajalo's shot with an hour on the clock, and the pressure eventually told.
A minute after being brought off the bench, Rodrigo De Paul sent in an out-swinging corner and Becao guided his header into the bottom-right corner on his Serie A debut.
Milan pressed for an equaliser and was frustrated when a penalty appeal was rejected. The closest either side came to another goal was when Lasagna's shot was saved.