AC Milan maintained their Serie A title push and moved to within four points of rivals Inter with a 2-1 win over Roma at the Stadio Olimpico.
It was a pulsating game with chances at both ends, but after squandering the better opportunities, Milan survived a scare to keep pace at the top after successive league defeats.
Zlatan Ibrahimovic was at the centre of everything early on, forcing Pau Lopez into a save before seeing a shot blocked and back-heeling wide yards out from an open goal after dispossessing the Roma goalkeeper.
Kessie ready to commit to Milan
At the other end, Roma top scorers Jordan Veretout and Henrikh Mkhitaryan began to threaten, but Milan remained in the ascendancy. Simon Kjaer crashed a header against the bar before Lopez kept Roma in the game, denying the impressive Ante Rebic twice.
- Chelsea and Manchester United battle to stalemate
- Solskjaer: If that wasn't a penalty then I'm blind
- Liverpool win to end four-match losing league run
Two minutes before the break, Milan took the lead through Franck Kessie's penalty. The referee was instructed to check the VAR monitor after Federico Fazio challenged Davide Calabria in the area before pointing to the spot.
It didn't take long after the break for Roma to level, as it was Veretout who grabbed his 10th of the season with a curling effort past Gianluigi Donnarumma.
Ibrahimovic was forced off with a groin problem and replaced by Rafael Leao, but just eight minutes after Roma's leveller, Milan went ahead again. Lopez's poor clearance was pounced upon by Calabria who eventually found Rebic. He turned well and emphatically fired into the bottom corner.
Rebic joined Ibrahimovic in being withdrawn, because of a hip injury, as Roma looked to bounce back again through Mkhitaryan. He bamboozled Kessie in the area and flashed a shot over the bar.
Stephan El Shaarawy was introduced and made a difference against his former club as Mkhitaryan was denied by Donnarumma before a clash in the area with Theo Hernandez. The Armenian thought he was fouled, but the referee booked him for simulation and Milan held on.
TALKING POINT - Rebic steps up after Zlatan no-show
Both men may have been replaced through injury, but they each had much different impacts. Ibrahimovic had a number of big chances which a man of his class should have put away before a groin issue ended his night. Rebic, who was threatening all night, deserved his well-taken goal before he too had to come off. VAR was heavily involved, helping award Milan's penalty for Fazio's foul on Calabria, but controversially not intervening when Mkhitaryan believed he was fouled by Hernandez.
MAN OF THE MATCH - Davide Calabria (AC Milan)
Perhaps Rebic may have earned this had he completed the game, but Calabria was superb. He denied Roma down their left at every turn and set the tone for the Rossoneri defensively as well as winning the penalty. A stellar performannce.
Man Utd to pounce for £30m star bargain from Fiorentina - Euro Papers
Roma: Lopez 7, Mancini 6, Christante 6, Fazio 5, Karsdorp 5, Villar 5, Veretout 7, Spinazzola 6, Pellegrini 6, Mkhitaryan 7, Mayoral 6 Substitutes: Bruno Peres 6, El Shaarawy 7, Pedro 5, Diawara 5
AC Milan: Donnarumma 6, Calabria 8, Kjaer 7, Tomori 7, Hernandez 7, Tonali 6, Kessie 7, Saelemaekers 7, Calhanoglu 6, Rebic 8, Ibrahimovic 5 Substitutes: Diaz 6, Leao 6, Krunic 5, Meite n/a, Castillejo n/a
4' - CHANCE! It is all happening here. A poor touch from Lopez saw Ibrahimovic steal in, but he back heels wide. Calhanoglu was stood free in a better position, but he should have put it away.
43' - GOAL! - Kessie is stepping up for the penalty... SCORES!
50' - GOAL! - Jordan Veretout bends in the equaliser from the edge of the box. 1-1!
58' GOAL! - What a finish Rebic. Poor clearance by Pau Lopez and Milan break. The Croat spins past Mancini and rifles a shot into the corner.
Milan manager Stefano Pioli registered just his fifth win against Roma in his career.
Gazidis to begin treatment for throat cancer
AC Milan confirm signing of Chelsea striker Giroud