Fabio Borini met a Patrick Cutrone cross to finish the job, as Milan shrugged Ludogorets aside 4-0 on aggregate to reach the Europa League last 16.
The Rossoneri were brimming with confidence after a 3-0 first leg victory in Bulgaria and decided to give misfiring Andre Silva an opportunity to prove himself. Gennaro Gattuso’s men were unbeaten in 10 competitive games. Ludogorets had Erol Dost and Claudiu Keseru suspended.
Marcelinho made a last-ditch tackle on Patrick Cutrone, in a new role on the left wing, and the 20-year-old made his mark immediately with a splendid cross that found Fabio Borini to tap in at the back post, sneaking in behind the defender.
Marcelinho scuffed his finish wide from a very promising position, while Ludogorets struggled to clear both a Franck Kessie cross and the Andre Silva follow-up.
After the restart, Cutrone came sliding on to a Borini cross-shot and couldn’t quite get there, and Antonio Donnarumma had some work to do on Swierczok from close range.
Milan 1-0 Ludogorets (4-0 agg)
Borini 20 (M)
Milan: A Donnarumma; Abate, Zapata, Romagnoli (Bonucci 74), Rodriguez; Kessié (Mauri 56), Montolivo, Locatelli; Borini, Andre Silva, Cutrone (Kalinic 56)
Ludogorets: Broun; Natanel, Moti, Terziev, Cicinho; Goralski, Abel (Dyakov 82_; Wanderson, Marcelinho (Campanharo 63), Misdjian (Lukoki 71); Swierczok
Ref: Mallenco (ESP)
See the latest Serie A predictions and betting tips with Eurotips.co.uk