Rovers had started the game in third but took advantage of Tranmere and second-placed Sheffield United both being in FA Cup action.
David Cotterill got the only goal after 84 minutes at the Keepmoat to earn Doncaster three points which took them level on points with Tranmere who remain top on goal difference.
Defeat leaves Colchester just one point above the relegation zone.
Andy Williams scored a goal in each half as Swindon consolidated their grip on fifth place with a 4-0 home win over Carlisle.
Williams opened the scoring after 16 minutes and James Collins made it 2-0 20 minutes later.
Williams got his second 10 minutes into the second half before Raffaele de Vita completed the scoring 10 minutes for the end as Carlisle dropped one place to 18th.
Stevenage moved up from 12th to ninth with a 2-1 win away to Crewe.
The Alex had started the game in 10th and a goal from Chuks Aneke after half an hour looked set to take them to the fringes of the play-off places.
But Lucas Akins (55) and Marcus Haber (60) ensured Stevenage moved above their opponents to lie three points off a play-off spot.
Shrewsbury swapped places with Carlisle, moving up to 17th with a 0-0 draw at Scunthorpe which left the latter in the bottom four.
Scunthorpe had started the day in the bottom two but the point moved them up two spots and to within a point of Colchester.