With both sides harbouring distant hopes of the play-offs this was a must win game.
It threw up a family affair as City's young defender Clayton Fortune was up against his uncle, the vastly experienced Leo Fortune-West.
The nephew won two early headers but it was the 34-year-old Doncaster player who got in the decisive strikes with goals in each half.
The first came on 34 minutes after Doncaster had been given a disputed free-kick just in City's half.
It should not have caused much trouble but James Coppinger and Michael McIndoe combined to confuse defenders and from 10 yards Fortune-West powered home a strong downward header.
The lead was well deserved but Bristol were already feeling hard done by.
All four of Doncaster's back line had been called upon to make last ditch tackles as Bristol ran up their corner count.
Missing their top scorer, Leroy Lita, through suspension, City lost their influential flank runner Scott Murray. He was stretchered off with a suspected fractured cheek bone after a challenge by McIndoe.
City's manager Brian Tinnion was rebuked for disputing an assistant referee's decision and was well fired up for his half-time team talk.
A storming start to the second half was the result. Both City's Paul Heffernan and Luke Wilkshire had chances and Rovers keeper Iain Turner made a vital foot first interception from Heffernan.
The equaliser came on 61 minutes when Stephen Brooker chased a long ball from out of defence. He outpaced Steve Foster to finish with a great left-foot drive.
Minutes earlier, Dave Mulligan had cleared a Heffernan header off the line and he again saved Rovers by getting a knee to a header from Danny Coles.
Everything seemed to be going City's way when Doncaster's Ricky Ravenhill was sent off after receiving his second yellow card.
It was all going one way but with two minutes left Fortune-West nicked his second goal unmarked at the far post.
Doncaster's travelling fans were wild with joy but then in injury time Brooker silenced them with his second goal to snatch a point.