Massimiliano Allegri's men were given a run for their money against the Giallorossi, but secured the victory in a thrilling game away to Luis Enrique's men
An exciting first half saw Zlatan Ibrahimovic and Nicolas Burdisso trade goals, before veteran Alessando Nesta put the Rossoneri ahead with a thumping header.
Roma pushed hard for an equaliser after the break, but were punished by Ibrahimovic, who completed his brace. Bojan grabbed a late goal for the Giallorossi, but it proved a mere consolation.
The home side dominated the proceedings early on as they kept possession, pinning back the visitors in their own half. This, however, left them vulnerable to swift counter-attacks and Massimiliano Allegri's players soon took advantage.
In the 17th minute a sublime cross by Alberto Aquilani found Ibrahimovic, who headed past Maarten Stekelenburg in typically powerful fashion to give AC Milan the lead.
Roma, spurred on by conceding a relatively simple goal, decided to pump even more bodies into the final third, and their gamble soon produced results as AC Milan struggled to cope with the pressure.
In the 28th minute some appalling defending by Gianluca Zambrotta allowed Burdisso to head in the equaliser, following a corner on the left as the Rossoneri finally buckled under the pressure.
On the half-hour mark, however, veteran Nesta put the visitors back in the driving seat with a carbon copy of the Argentinian's strike as he headed past Stekelenburg after a pass by Robinho.
Things went from bad to worse for Luis Enrique's men in the 39th minute, when Fabio Borini picked up an injury and had to be replaced by ex-Barcelona striker and Spain international Bojan.
Roma started brightly in the second period, but were struggling to break AC Milan's resolute defence. The Rossoneri had Nesta to thank in the 55th minute, when the ex-Lazio man made a crucial intervention to prevent a shot from Bojan going past the beaten Christian Abbiati.
Moments later the goalkeeper redeemed himself as he pulled off an immense save to stop a Miralem Pjanic free-kick from going in the left corner. In a curious incident in the 68th minute, substituted midfielder Kevin-Prince Boateng was sent off after he allegedly verbally abused the fourth referee.
Meanwhile Roma were continuing to press and nearly equalised moments later, when Abbiati pulled off an immense reflex save from six yards out to deny Pablo Osvaldo. The Giallorossi, however, were looking increasingly fragile at the back, and soon paid the price for their reckless attacking.
Aquilani was once again the provider in the 78th minute, when his cross from the left was met with a header by Ibrahimovic, who completed his brace to put the game beyond the home side's reach.
Roma ultimately managed to score again through Bojan, but it was too late and too little, as the game finished 3-2.