Saturday's result extended Milan's winless streak to three matches in the Italian league.

Roberto Pereyra, Beto and Kingsley Ehizibue scored for Udinese.

Milan were beaten by Fiorentina and held to a draw by Salernitana in their previous two Serie A matches, while advancing to the Champions League quarter-finals with a 1-0 aggregate win over Tottenham.

They missed the chance to jump to second and remained fourth with 48 points, a point clear of fifth-placed AS Roma, who play Lazio on Sunday.

"It was a negative performance. When the team plays like this, neither aggressive, nor intense, nor precise or focused, it means the coach has worked badly in preparing for the match. We were too far below our capabilities this evening," Milan manager Stefano Pioli told Sky Sport Italia.

"Look, it's clear we won't retain the Scudetto, but we can win this mini-league of teams trying to qualify for the Champions League. We want to, and can, do better this season."

Pereyra put Udinese ahead after Lazar Samardzic intercepted a poor pass by Milan midfielder Ismael Bennacer.

Ibrahimovic equalised momentarily with a penalty that was retaken for encroachment after his first effort was saved. 

At 41 years and 166 days, Ibrahimovic beat the previous record for oldest scorer held by Alessandro Costacurta, who was 41 years and 25 days when he scored in 2007 — coincidentally also for Milan with a penalty against Udinese.

Having recently returned from knee surgery, Ibrahimovic started for the first time since January of last year.

Beto quickly restored Udinese's advantage from close range in a wild end to the first half, and Ehizibue sealed it midway through the second half.

AAP