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."
Live Text Commentary
Full Time The final whistle goes and the game is over.90:00 +4:28
James Husband restarts play with the free kick.90:00 +4:28 Booking
Booking Gavin Massey goes into the book for unsporting behaviour.90:00 +3:44
James Husband fouled by Gavin Massey, the ref awards a free kick.90:00 +2:42
Foul by Andy Bond on James Husband, free kick awarded. James Husband takes the direct free kick.90:00 +2:15
Brian Wilson gives away a free kick for an unfair challenge on James Husband. Direct free kick taken by James Husband.90:00 +0:28
Corner from the left by-line taken by Jack Compton, Iain Hume manages to make a clearance.89:07 Booking
Booking Booking for Anthony Wordsworth for dissent.88:08
Unfair challenge on Paul Quinn by Michael Rose results in a free kick. Lee Fowler restarts play with the free kick.87:33
Short corner taken by James Coppinger.86:04
Free kick taken by Jamie McCombe.86:04 Substitution
Substitution George Porter is brought on as a substitute for Dominic Samuel.86:04 Substitution
Substitution James Husband comes on in place of David Cotterill.86:04
James Coppinger fouled by Michael Rose, the ref awards a free kick.84:52
Unfair challenge on Iain Hume by Josh Thompson results in a free kick. Direct free kick taken by Jamie McCombe.83:51 Booking
Booking David Cotterill booked.83:03 Goal scored
Goal! - David Cotterill - Doncaster 1 - 0 Colchester A goal is scored by David Cotterill from the edge of the penalty box to the top right corner of the goal. Doncaster 1-0 Colchester.76:03 Substitution
Substitution Andy Bond joins the action as a substitute, replacing Kem Izzet.73:37
Lee Fowler fouled by Anthony Wordsworth, the ref awards a free kick. Lee Fowler restarts play with the free kick.71:25
Iain Hume concedes a free kick for a foul on Anthony Wordsworth. Mark Cousins restarts play with the free kick.
Substitution Jack Compton is brought on as a substitute for Drey Wright.66:23 Substitution
Substitution Lee Fowler comes on in place of Emile Sinclair.66:23 Substitution
Substitution James Coppinger joins the action as a substitute, replacing Kyle Bennett.61:28
Drey Wright takes a shot from just outside the penalty area which clears the crossbar.60:46
Brian Wilson decides to take a short corner.58:29
Iain Hume takes a shot. Blocked by Marcus Bean. Outswinging corner taken by David Cotterill from the right by-line.57:08
Drey Wright has an effort at goal from just inside the box that misses to the right of the goal.56:23
The ball is delivered by Brian Wilson, Paul Quinn manages to make a clearance.55:03
Shot from outside the box by Iain Hume misses to the left of the target.51:11
Effort from 6 yards by Iain Hume. Save by Mark Cousins.50:44
Free kick awarded for a foul by Kem Izzet on Iain Hume. David Cotterill restarts play with the free kick.49:12
Foul by David Cotterill on Drey Wright, free kick awarded. The free kick is swung in right-footed by Brian Wilson, Gary Woods makes a save.46:22
Kem Izzet gives away a free kick for an unfair challenge on David Cotterill. Direct free kick taken by David Cotterill. Unfair challenge on Magnus Okuonghae by Rob Jones results in a free kick. Mark Cousins restarts play with the free kick.45:01
The referee gets the second half underway.45:00 +0:21 Half time
Half Time The first half comes to an end.43:50
Unfair challenge on Drey Wright by David Cotterill results in a free kick. Brian Wilson crosses the ball in from the free kick. The official flags Dominic Samuel offside. Free kick taken by Gary Woods.43:20
The referee blows for offside against Marcus Bean. Free kick taken by Gary Woods.41:42
Paul Quinn gives away a free kick for an unfair challenge on Marcus Bean. Mark Cousins takes the free kick.40:24
David Syers produces a right-footed shot from the edge of the box and misses to the right of the goal.39:59
Brian Wilson produces a cross.35:42
The offside flag is raised against Dominic Samuel. Free kick taken by Gary Woods.32:43
Header on goal by Dominic Samuel from inside the box goes harmlessly over the target.29:07
Inswinging corner taken by Michael Rose, save by Gary Woods.26:38
Corner taken by Michael Rose played to the near post, Close range header by Magnus Okuonghae misses to the right of the target.20:49
A cross is delivered by Jamie McCombe, Mark Cousins makes a comfortable save.19:38
Emile Sinclair produces a right-footed shot from just outside the box that goes wide left of the target.19:28
David Cotterill delivers the ball, clearance made by Marcus Bean.18:24
The ball is sent over by David Cotterill, save by Mark Cousins.11:06
Kem Izzet takes a shot. Save by Gary Woods. Inswinging corner taken by Brian Wilson, Dominic Samuel has a headed effort from close range and clears the crossbar.10:02
David Syers takes a shot. Blocked by Anthony Wordsworth.9:28
The ball is delivered by Tommy Spurr.7:33
Close range header by Marcus Bean goes wide of the left-hand post.3:42
Long range shot from Brian Wilson misses to the left of the goal.2:09
Foul by Jamie McCombe on Dominic Samuel, free kick awarded. Michael Rose takes the free kick.1:05
The official flags Dominic Samuel offside. Tommy Spurr takes the indirect free kick.0:00
The match gets underway.
Live data and text provided by our data suppliers