Doncaster moved level with League One leaders Tranmere with victory over Colchester, a result which condemned the U's to a club record-equalling eighth successive league defeat.
Josh Thompson thought he had headed the visitors ahead, but an infringement saw the referee disallow the goal.
With on-loan Emile Sinclair making his Rovers debut, Iain Hume forced visiting keeper Mark Cousins into a fine save.
And late on David Cotterill curled into the far corner to win it for the hosts.
Doncaster, who had a game in hand on promotion rivals Tranmere and Sheffield United prior to the match, took advantage of both teams' participation in the FA Cup to move three points above the Blades and behind the Merseyside club only on goal difference.
VIEWS FROM THE DRESSING ROOM
Doncaster Rovers manager Dean Saunders told BBC Radio Sheffield:
"Last week's game emotionally and physically took it's toll on the players and you could see that today we were a yard short.
"That's four games without the opposition having even half a chance against us, without scoring a goal they've not had a half chance against us, only long range shots.
"That's the Preston game, Sheffield United, who scored from a penalty and a goal-mouth scramble and Oldham they didn't get a chance either.
"So we're defending great and when we don't string it together like today we kept a clean sheet and stayed in the game."
Colchester United manager Joe Dunne told BBC Essex:
"We were magnificent. I thought we were the better team. We controlled the ball, I though we got into great positions and tested their back four.
"We were very good. I don't think we deserved to lose the game. Any real football person would say that.
"The players should be very proud of themselves. That's a great performance to take into next week.
"For once I can't stand here and say it's the same stupid mistakes because it wasn't. It (David Cotterill's goal) was a class finish."
Sorry, we were unable to load match stats, please try again.