A sell-out crowd of 23,000 at the KC Stadium saw a battling, end-to-end match, which was a decided by an excellent hat-trick and saw Rovers knocked off the top of Division Three.
City took the lead in the third minute after Rovers conceded a free-kick a few yards outside the box.
Jason Price, facing away from goal, rose above the defence in the six-yard area and his back header flew over everyone and into the net.
But Doncaster went on the attack almost immediately and the pace of the game was frenetic at times, with the tackles flying in.
Doncaster's best chance came on 39 minutes when Gregg Blundell brought a great fingertip save from Boaz Myhill.
Seconds later, Rovers drew level after City allowed Leo Fortune-West too much time to turn in the box and the big striker thumped an unstoppable shot in from 18 yards.
Doncaster's away contingent of 4,500 fans erupted, though they had been in good voice throughout.
After 43 minutes, Blundell shot wide as Doncaster finished the first half the stronger.
In the first minutes of the second half, Stuart Green had a shot saved by Andy Warrington, though the game lost its pace a little until the 66th minute when Price brought the home fans back to life with a superbly taken goal from 15 yards.
Ten minutes later Blundell's shot in front of an open goal was blocked by Andy Dawson and the referee waved away Rovers' pleas for a penalty.
A minute later, Ben Burgess ran clear and should have buried a header, but Warrington saved it and the ball fell to Price who, from what seemed an impossibly acute angle, slotted between post and keeper to complete his treble.