Huntelaar double defeats Udinese
Klaas-Jan Huntelaar, starting in place of the injured Marco Borriello, headed the opener on seven minutes from a Ronaldinho cross and the Dutch striker also made it 3-1 in the second half after poor Udinese defending.
Substitute Alexandre Pato netted Milan's second on his return from a thigh injury when he ran on to a long ball and appeared to have made a mess of rounding the goalkeeper before slotting home six minutes before the break.
Udinese, who had beaten Milan in the league and cup already this term, pulled one back on the stroke of half-time when shaky keeper Dida failed to keep out a header from Antonio Floro Flores.
Antonio Di Natale beat the offside trap to make it 3-2 four minutes from the end and give Milan some late jitters.
Milan moved back up to second spot, eight points behind leaders Inter Milan, but AS Roma can leapfrog Leonardo's side with a win over Palermo on Saturday.
Former United midfielder David Beckham started on the bench for the second straight match and will now be fretting over his place for Tuesday's Champions League last-16 first leg at home.
The Rossoneri, who have played the same number of games as Roma, lost new winger Mancini to a first-half injury and coach Leonardo opted to bring on Brazilian forward Pato for his first appearance this year rather than turn to Beckham.
The England player came on for the impressive Ronaldinho with 15 minutes left but played one dreadful pass which almost led to another goal for Di Natale.
Milan's Alessandro Nesta returned from injury but fellow centre back Thiago Silva was forced off with a knock.
United boss Sir Alex Ferguson was watching in the San Siro stands and will not have been quaking in his boots despite Milan ending a four-match winless run.