Krzysztof Piatek, Samu Castillejo and Theo Hernandez scored for Milan, who are a modest 10th in Serie A after a miserable season, while veteran Zlatan Ibrahimovic stayed on the bench.
Piatek ran onto Ismael Bennacer's pass to open the scoring after 20 minutes against Serie A's bottom-placed team, and the Pole then provided the pass for Castillejo to curl in the second one minute before halftime.
Piatek missed two good chances after the break but it did not matter as Hernandez rifled in the third.
Earlier, last year's runners-up Atalanta were knocked out in a 2-1 defeat at Fiorentina, who scored the winner with 10 men.
Gaetano Castrovilli in Fiorentina-Atalanta
Image credit: Getty Images
New signing Patrick Cutrone exchanged passes with Dalbert before firing Fiorentina ahead after 11 minutes, his first goal since his move on loan from Wolverhampton Wanderers.
Josip Ilicic scored against his old club to equalise in the 67th minute and Fiorentina had German Pezzella sent off three minutes later as he received a second yellow card for diving.
Even so, Fiorentina won the match with six minutes left after Erick Pulgar released Pol Lirola on the right and he fired into the bottom corner.
Juventus forward Paulo Dybala scored twice and was involved in a mesmerising exchange of passes to provide another for Gonzalo Higuain as the Turin side thumped Udinese 4-0.
Juve, missing Cristiano Ronaldo with sinusitis, went ahead with a delightful goal after 16 minutes that had all the hallmarks of their coach Maurizio Sarri.
A long passing move ended with Dybala and Higuain exchanging three successive one-twos to slice open the Udinese midfield before Higuain slotted the ball past goalkeeper Nicolas.
Dybala got on the scoresheet 10 minutes later, converting a penalty after Nicolas fouled Federico Bernardeschi and the Argentine curled in the third in the 58th minute.
A Douglas Costa penalty just after the hour completed the rout.