As Ibrahimovic was at full stretch to poke the ball from Rafael Leao over the top past Antonio Mirante, unable to cut it out by Marash Kumbulla, the 39-years-old put the Rossoneri in front within two minutes.
Tatarusanu made his season debut and, when he was at fault for the equalizer, it showed. Giving Edin Dzeko a free header the Romanian goalkeeper totally missed Lorenzo Pellegrini’s ball on a corner kick.
On the other side, Antonio Mirante made strong saves on the shot of Calhanoglu and on the header of Alessio Romagnoli, then the upright came to his rescue from the ensuing corner on Simon Kjaer’s try.
Mirante flew to palm away a Calhanoglu free kick on the stroke of halftime and Tatarusanu made a double saving on Roger Ibanez and Pellegrini, neither convincing.
In the same way, as the first, the second half began with Leao setting an early goal for Milan. He burst down to the left this time and pulled it back for Alexis Saelemaekers to fire from 10 yards for the first time.
On the counter created by Pellegrini and Henrikh Mkhitaryan, Dzeko seemed to have equalized, but this time the Bosnian blasted over the bar.
On Thursday, both teams looked tired in the second half, as Gianluca Mancini nodded from a corner wide when they played in the Europa League.
As Tatarusanu parried an attempt, there was a very controversial moment, both Ismael Bennacer and Pedro Rodriguez went for the ball and collided, but Roma was given a penalty by the referee. It looked like a textbook case for a VAR review, but there was no contact, and Jordan Veretout converted to equalize.
Through awarding an equally inexplicable penalty, the referee managed to infuriate Roma moments later, when Mancini appeared to strike in the air rather than Calhanoglu, but the Turkey international went down and Ibrahimovic converted a spot-kick.
The drama was not over yet, as Ibrahimovic’s shinned clearance on a Roma corner just transformed into help for Kumbulla to volley in at the back post.
Nearly dropping back into the net of Mirante as he saved the glancing header of Franck Kessie on a Calhanoglu corner, it was wide open to the bitter end.
A corner finds Romagnoli’s header at the back post on the last kick of the day, but it skimmed a coat of paint off the woodwork.
Milan – Roma 3-3
Goals: Ibrahimovic (2), (79), Dzeko (14), Saelemaekers (47), Veretout (71), Kumbulla (84)
Milan: Tatarusanu; Calabria, Kjaer, Romagnoli, Theo Hernandez; Kessie, Bennacer; Saelemaekers (Krunic 72), Calhanoglu, Leao (Castillejo 72); Ibrahimovic
Roma: Mirante; Ibanez, Mancini, Kumbulla; Karsdorp (Peres 66), Veretout (Villar 86), Pellegrini (Cristante 76), Spinazzola; Pedro, Mkhitaryan; Dzeko