The visitors won the battle of the Rovers at the Keepmoat Stadium as Doncaster lost to Bristol in League One.
Doncaster were in front after just four minutes. Matty Blair crossed and John Marquis fired home.
But it was 1-1, when Ryan Sweeney equalised on 24 minutes, before Rory Gaffney put the visitors in front five minutes after half-time.
Ellis Harrison added a third goal with five minutes remaining to secure three points for Bristol.
Rovers lost defender Joe Wright with broken ribs, and he now faces two months on the sidelines.
“Joe Wright has fractured his ribs and will be out for two or three months,” boss Darren Ferguson said.
“We’ll have to look at bringing more than one centre half in now and things like that are going against us.”
Doncaster: Lawlor, Alcock, Kongolo, Marquis, Rowe, Whiteman, Wright, Blair, Garratt, Beestin, Coppinger. Subs: Marosi, Manderville, May, Houghton, Mason, Amos, Fielding.