Connor Wickham celebrated signing a new contract with his first goal of the season as Town gave Paul Jewell a first win as Blues' boss.
The 17-year-old thumped in a header to put Town in front on the hour after David Norris had cancelled out Billy Sharp's early goal.
Sharp struck again a minute after Wickham's goal but Carlos Edwards won it for Town with a deflected 25 yarder.
Lee Martin came in for his first game of the season after returning on loan from Charlton in one of two changes for Blues from the team that went down at Millwall last week, Grant Leadbitter the second after completing his suspension.
Doncaster could have been ahead before Sharp's fifth minute goal, the former Sheffield United striker left alone to spin and fire against the post.
Seconds later he did have the ball in the net, getting on the end of James Coppinger's ball over the top and smashing a low drive past Marton Fulop into the far corner.
Wickham, who signed a new contract on Friday that will keep him at the Club until 2013, looked the most likely source for an equaliser in the first-half. The teenager tested Neil Sullivan from distance with a right foot effort then shot into the Rovers' 'keeper's hands after Tamas Priskin' lofted pass had caused confusion in the visitors' defence.
Gareth McAuley and Mark Wilson both earned yellow cards for fouls before Sharp had the ball in the net for a second time but not before the offside flag was raised.
Fulop held on from Dean Shiels' fiercely hit cross, while at the other end Wickham had another effort at goal that forced Sullivan into action.
Priskin headed over after great work by Martin down the right flank but just before the break it needed Edwards' left foot to clear the ball off the line from Adam Lockwood's header.
Town were level though three minutes after the restart, Norris thumping a volley into the corner in spectacular style after Priskin had knocked the ball on.
McAuley denied Sharp, Martin and then Edwards frustrated by dogged Doncaster defending at the other end.
Colin Healy played a big part in Town's second goal on the hour, swinging in a superb cross that Wickham headed powerfully in. The lead lasted less than a minute, Sharp grabbing his second with a close range finish from Coppinger's equally excellent cross.
Edwards then made it three goals in five minutes, his 25 yarder taking a deflection before beating Sullivan to put Town back in front in a frantic passage of play.
Lockwood blocked Wickham's shot as Town threatened a fourth, Healy then doing well to get behind the Doncaster defence, James Chambers conceding a corner as the Blue Army called for a penalty.
Norris dragged a shot wide after a surging run, the skipper then firing over from the edge of the area.
Sharp smashed a right foot effort into the sidenetting as the game entered the closing five minutes, Priskin firing over at the other end after a flowing move.
Ryan Mason replaced Dean Shiels in the first change just a few minutes from the end, Waide Fairhurst also on for Chambers.
Wickham, who gave one of his most impressive displays in a Town shirt, picked up a yellow card in added on time but it didn't spoil his or Blues' day although it took a smart save from Fulop to make sure Paul Jewell's first home game in charge was a winning one.
Town: Fulop, Edwards, McAuley, Delaney, O'Dea, Norris, Leadbitter, Healy, Martin, Priskin, Wickham. Subs not used: Lee-Barrett, Peters, Scotland, Hyam, Smith, Civelli, Kennedy. Booked: McAuley, Wickham.
Doncaster: Sullivan, Chambers (Fairhurst 88), Kilgallon, Lockwood, O'Connor, Coppinger, Shiels (Mason 87), Wilson (Hird 90), Oster, Hayter, Sharp. Subs not used: Woods, Friend, Souza, Keegan. Booked: Wilson.
Att: 17, 298