The Rossoneri were in dire need of a boost after only snatching one point from the previous two rounds. Olivier Giroud sat out, so Ibrahimovic got his first start this season.
The home side took a good start just nine minutes into the game, when Milan defender Ismael Bennacer’s wayward pass sparked their counter-attack. Lazar Samardzic charged forward and assisted for Roberto Pereyra to finish with a low strike.
The moment came in the 45th minute, when Ibrahimovic converted a retaken penalty, which made him the oldest goalscorer aged 41 years and 166 days. The previous record was set by another Milan legend Alessandro Costacurta who also scored against Udinese through a spot-kick in 2007.
The long stoppage time before the break allowed Udinese to restore the lead as Isaac Success rolled across from the by-line, before Beto turned it in from a close range.
Udinese added another in the 69th minute when Kingsley Ehizibue tapped the ball in at the back post to seal the win, ruining Ibrahimovic’s milestone night.
Milan still rank fourth with 48 points, but would drop to fifth should Roma beat or draw with Lazio on Sunday.
Also on Saturday, Monza tied with Cremonese 1-1, Salernitana shared the spoils with Bologna at 2-2.