Udinese heaped more pressure on AC Milan boss Stefano Pioli with a 1-0 win at the San Siro for their first Serie A victory this season.
Roberto Pereyra’s penalty just after the hour proved decisive as the Rossoneri slumped to a second successive home defeat and saw their winless run extend to four matches in all competitions.
AC Milan now find themselves in a fight to stay in the top four heading towards the international break – with Pioli facing more questions on his future.
Udinese created an early opening when Jordan Zemura cut the ball back and it was not cleared properly, but Pereyra could only fire his shot over the bar from 15 yards.
Zemura was involved again when he sent a pass across the face of the Milan goal following a free-kick, but no-one was able to get a telling touch.
The Rossoneri, missing Theo Hernandez through an ankle problem, finally showed some signs of life when Rade Krunic headed wide from a corner and then Davide Calabria had his shot beaten away by Udinese keeper Marco Silvestri.
American midfielder Yunus Musah again tested Silvestri with a fierce drive.
Alessandro Florenzi was unfortunate not to be rewarded for a fine piece of individual skill when he took a pass from Rafael Leao and spun around on to goal, but could not find a finish.
AC Milan made a couple of changes for the second half as Yacine Adli replaced Krunic and Swiss forward Noah Okafor came on for Luka Jovic, who looked to have picked up an injury.
Udinese wasted another chance to break the deadlock when a corner was flicked on to the back post, where defender Christian Kabasele lashed it over from close range.
The hosts then broke quickly as Okafor was sent clear, but his chipped effort over the on-rushing Silvestri dropped wide.
On the hour, Udinese were awarded a penalty when Festy Ebosele went down as he got in between Tijjani Reijnders and Yacine Adli, which was backed up by a VAR review.
Pereyra kept his cool to send Milan keeper Mike Maignan the wrong way as he rolled the ball into the bottom right corner.
Pioli made another change to try to spark his Milan side, with fit-again midfielder Ruben Loftus-Cheek coming on for a first appearance since the end of September.
It was Udinese, though, who then almost grabbed a second when Isaac Success’ downward header from a corner was palmed away by Maignan.
Milan pushed for an equaliser, with Rafael Leao threatening down the left before Florenzi lashed a shot high over the crossbar when a corner was cleared out to the edge of the box.
In the 89th minute, a deep cross from the left by Leao found Olivier Giroud, who diverted the ball towards the top corner off his shoulder, but Silvestri made a superb save at full stretch.
Silvestri tipped away a rising drive from Florenzi and Leao flashed a 20-yard drive just wide as Milan pressed in during seven minutes of stoppage time.
There was, though, to be no late reprieve as boos rang out from the disgruntled home fans at the final whistle while Udinese joyously celebrated a memorable first win under new manager Gabriele Cioffi.