The visitors led twice on the night but Massimiliano Allegri's side displayed admirable character to salvage a point towards the end against Serie A's second-placed team
Sulley Muntari was Milan's hero as he struck a 77th-minute equaliser to snatch a draw and deny the Giallorossi all three points.
Mattia Destro had opened the scoring for the visitors early in the first half, but Cristian Zapata levelled just before the break.
Kevin Strootman looked to have sealed the points for Roma with a penalty early in the second period, only for Muntari's late strike to earn the hosts a share of the spoils.
The Ghana international's intervention means Rudi Garcia's men are now five points adrift of champions Juve, while Milan move into the top half of the table.
Allegri made four changes from Milan's 2-2 draw at Livorno, with Christian Abbiati, Mattia De Sciglio, Daniele Bonera and Muntari all returning to the starting line-up.
Bradley replaced the suspended Miralem Pjanic for the visitors, while Destro started in attack after scoring the winner against Fiorentina last time out.
Roma started the brighter and made their early possession count with the opening goal in the 13th minute.
Adem Llajic and Strootman combined well on the left before the Dutchman rolled the ball into Destro and the Italian striker fired home from six yards.
Despite Roma's dominance, Milan were level just before the half-hour mark through the unlikely source of Zapata.
Muntari rose unmarked at the front post to flick on a right-wing corner and the Colombian defender ghosted in to head home his first league goal of the season.
Moments later, Roma thought they had gone back in front through Bradley, but the American's hooked volley bounced on the goal line and spun away to allow Milan to clear to safety.
The hosts were forced into a change at the break as Abbiati was replaced by Gabriel in goal and the 21-year-old had the worst possible start as he gave a penalty away five minutes after the interval.
Gervinho was released behind the Milan defence, only for the Brazilian to bring him down on the left-edge of the area.
Gabriel was booked and Strootman made no mistake from the spot, sending the keeper the wrong way for his fourth Serie A goal.
After Bradley had missed another chance to extend Roma's lead, the hosts drew level again once more through Muntari on 77 minutes.
The 29-year-old received the ball on the edge of the penalty area, jinked past Dodo and rifled his shot into the bottom corner.
Mario Balotelli had two chances to complete an unlikely turnaround for Milan in the closing minutes as he first saw a vicious 20-yard free-kick parried away by De Sanctis, before then dragging a left-footed shot wide of the post from inside the area in injury-time.
However, Allegri's team almost conceded with the last kick of the game, when Gervinho shot wide after smartly working an opening for himself.