Ibrahimovic, with his back to goal, hooked the ball into the net with an overhead kick in the 83rd minute despite not making proper contact after Sebastien De Maio had sliced an attempted clearance high into the air from Ante Rebic‘s cross.
The 39-year-old Swede, who also set up Milan’s opening goal for Franck Kessie, has now scored in his last six Serie A outings.
Milan have 16 points from six games, after extending their unbeaten run to 24 matches in all competitions, and are four clear of Atalanta while, struggling Udinese have three.
AC Milan, with Gianluigi Donnarumma back in the side after recovering from a COVID-19 infection, went ahead after 18 minutes.
Ismael Bennacer lofted a ball over the Udinese defence to Ibrahimovic who held off his marker and laid it off for Kessie to rifle into the top corner.
Ibrahimovic then had a powerful effort blocked by Juan Musso although Udinese also enjoyed a spell of pressure.
The hosts were back on level terms three minutes after the break thanks to a penalty awarded for a foul by Alessio Romagnoli on Ignacio Pussetto, although it seemed a harsh decision as the Milan defender appeared to make contact with the ball.
Rodrigo De Paul ignored the protests as he blasted his shot into the top corner.
The Argentine also threatened with a long-range drive which flew centimetres over the crossbar before, almost inevitably, Ibrahimovic won the match for the visitors.