James Coppinger gave Rovers a 13th minute lead with a smart finish.
However, the home side, who came into the game on the back of five straight defeats, fought back to win it with goals either side of half time from Luke McCormick.
Doncaster have lost nine of their last 14 games and are now five points adrift of the play-off positions.
RECAP the game below.
LIVE: Bristol Rovers 2 Doncaster Rovers 1
Last updated: Monday, 05 April, 2021, 17:01
GOALS: Coppinger (14), McCormick (37, 56)
B ROVERS: Jaakkola; Williams, Baldwin, Harries; Walker (Ayunga 57), Upson, Martinez, Leahy; Westbrooke, McCormick; Hanlan. Subs: Day, Little, Daly, Hare, Tutonda, Oztumer.
D ROVERS: Balcombe; Horton (Greaves 82), Anderson, John, James; Smith (Gomes 82); Okenabirhie, Richards (Bostock 68), Coppinger (Simoes 68), Lokilo; Bogle. Subs: Jones, Amos, Robertson.
REF: Anthony Coggins.
5pm An awful, awful defeat
A bright start, then a battle, then a whimper - and it all adds up to a very poor defeat for Doncaster Rovers.
They needed fight this afternoon and all they got was huff and puff.
This one is going to take some getting over. Very disappointing.
4.58pm All over
90+2 Big save
Bristol Rovers keeper Jaakkola pushes away a header from Omar Bogle.
4.52pm ADDED TIME
82min Double substitution
AJ Greaves and Madger Gomes replace Matt Smith and Branden Horton
75min Off the line
Ellery Balcombe keeps out a powerful Jack Baldwin header on the line but gets a kick in the face from Omar Bogle for his trouble.
74min Awkward save
Ellery Balcombe pushes away a shot from the corner of the box in real awkward fashion. The ball bounced in front of him but he also looked to have been unsighted
68min Double switch
Elliot Simoes and John Bostock replace James Coppinger and Taylor Richards
67min Yellow card
Jack Baldwin, Bristol Rovers