Roma had the better of the first half, but Patrick Cutrone’s back-heel flick and a dinked Davide Calabria finish gave Milan a huge win at the Olimpico.
This was a head-to-head for European ambitions, as nine points separated fourth from sixth going into this weekend. They were both fresh from midweek tests, the Giallorossi threw away a lead to lose 2-1 at Shakhtar Donetsk in the Champions League, the Rossoneri beating Ludogorets to set up a Europa League Round of 16 tie with Arsenal.
Edin Dzeko was rested in favour of Patrik Schick with Alessandro Florenzi suffering flu symptoms, while Patrick Cutrone was preferred to Nikola Kalinic and Andre Silva.
Milan had not beaten Roma at the Stadio Olimpico in Serie A since a 3-2 result in October 2011, when Zlatan Ibrahimovic and Alessandro Nesta were on target. That was followed by two draws and three defeats.
Gianluigi Donnarumma was celebrating his 19th birthday and was tested early on by a Cengiz Under strike, then showed great reflexes to palm a Schick rocket over the bar from close range, but the ex-Sampdoria forward had wandered offside.
Radja Nainggolan accidentally passed straight to Hakan Calhanoglu, but the Turk hesitated before pulling the trigger, allowing ‘Ninja’ to close him down.
Cengiz Under intelligently cushioned down a header for Lorenzo Pellegrini in the box, but Jack Bonaventura and Ricardo Rodriguez combined to tackle him cleanly.
Pellegrini also drilled wide from the edge of the area, but Schick showed great footwork to squirm between Davide Calabria and Lucas Biglia near the corner flag, cut off by a well-timed Leonardo Bonucci sliding tackle.
With the last kick of the first half, Calhanoglu got a touch to a cross-field pass, but Alisson was quick off his line to smother.
The deadlock was broken straight after the restart, when Suso curled in a left-foot cross from the right flank and Cutrone got there before Kostas Manolas, turning in with a delightful back-heel flick from six yards.
Roma reacted immediately, Diego Perotti drilling just wide after a mazy Schick run, but Alisson had to tip a ferocious Franck Kessie shot out from under the bar.
Donnarumma bravely rushed out to deny Schick from 12 yards and the hosts threw on Dzeko to bolster their forward options, but lost Cengiz Under to an ankle knock.
Alisson performed a stunning one-handed save on Nikola Kalinic and as Alessio Romagnoli was going to tap in the rebound, Manolas dived in with a decisive anticipation.
Milan doubled their lead with another well-worked goal by one of their youth products. Calabria completed a give-and-go with Kalinic, kept onside by Bruno Peres, and dinked it over Brazil Number 1 Alisson.
Kevin Strootman saw his volley charged down and Gregoire Defrel’s follow-up wide, but rarely looked like getting back into the game. In fact, Fabio Borini wasted a huge chance to make it 3-0 in stoppages, blasting over a Calhanoglu cross at the back post.
See the latest Serie A predictions and betting tips with Eurotips.co.uk