Clinton Morrison netted an 85th-minute penalty to earn Coventry City a deserved win over Doncaster Rovers.
The Sky Blues had the better chances in a thrilling game and should have been ahead long before Morrison scored after James Chambers fouled Gary Madine.
Leon Best hit the post with a penalty after being felled by Neil Sullivan and he also nearly scored when an attempted passback from a drop ball hit the bar.
Freddy Eastwood headed against a post and Michael McIndoe hit the woodwork.
Rovers were not without opportunities of their own and Dean Shiels missed a great chance when he fired over the bar.
But the home side's pressure finally told when Morrison netted from the spot.
Coventry boss Chris Coleman: "It would have been a travesty if we didn't win. We were the better team.
"There were spells in the first half when Doncaster played some lovely football but we were patient and had good chances.
"That's our third win on the bounce and that's been thoroughly deserved because the players have been tremendous. They have stuck together.
"I was delighted for Clinton. It's not easy when you haven't scored for some time.
"But as soon as the penalty was was given, I knew there was only one man who was going to take it."
Doncaster manager Sean O'Driscoll:
"I thought the first one was a penalty - I would have expected it if it was our striker.
"We got a bit of luck with the miss but the second penalty was a soft decision to say the least.
"I've seen it on the monitors and I have already clipped four or five incidents that are exactly the same. Why one is a penalty and another isn't, I don't understand. You just want a bit of consistency.
"I thought we were organised and disciplined and never really looked in danger of conceding apart from their long throws which are effective even if they are unattractive to watch."
90:00+4:09 The referee signals the end of the game.
90:00+3:26 John Oster is penalised for handball and concedes a free kick. Martin Cranie takes the direct free kick.
90:00+2:24 A cross is delivered by David Bell, Clinton Morrison takes a shot. Save made by Neil Sullivan.
90:00+1:35 Michael McIndoe has an effort at goal from long range that misses to the right of the goal.
90:00+0:50 James Coppinger crosses the ball, Leon Barnett makes a clearance. Corner taken by John Oster from the right by-line.
86:16 Substitution Mark Wilson goes off and John Spicer comes on.
86:16 Substitution Lewis Guy joins the action as a substitute, replacing Gareth Roberts.
84:44 GOAL - Clinton Morrison:Coventry 1 - 0 Doncaster Penalty taken right-footed by Clinton Morrison and scored. Coventry 1-0 Doncaster.
83:31 The ball is crossed by Jack Cork, Penalty awarded for an unfair challenge on Gary Madine by James Chambers.
83:16 The ball is swung over by Michael McIndoe, clearance by Jason Shackell.
82:37 Billy Sharp takes a shot. Blocked by Patrick Van Aanholt.
79:39 Substitution Gary Madine is brought on as a substitute for Freddy Eastwood.
79:39 Substitution Leon Best leaves the field to be replaced by Clinton Morrison.
78:54 Jason Shackell fouled by Leon Best, the ref awards a free kick. Jason Shackell takes the direct free kick.
78:14 Substitution Richard Wood comes on in place of James McPake.
77:28 The ball is swung over by Martin Cranie, Leon Best takes a shot. Save by Neil Sullivan.
74:33 The assistant referee flags for offside against Leon Barnett. Free kick taken by Neil Sullivan.
73:10 James Coppinger delivers the ball.
72:23 Michael McIndoe has an effort at goal from deep inside the area missing to the left of the target.
72:14 A cross is delivered by Patrick Van Aanholt.
69:44 Mark Wilson takes a shot. Aron Gunnarsson gets a block in.
69:13 Michael McIndoe produces a cross, clearance by Jason Shackell.
67:37 David Bell crosses the ball.
67:09 Billy Sharp takes a shot. Keiren Westwood makes a comfortable save.
65:27 Substitution James Hayter joins the action as a substitute, replacing Dean Shiels.
64:57 The ball is swung over by Martin Cranie, clearance by Mark Wilson.
62:20 Patrick Van Aanholt takes a shot. Jason Shackell gets a block in.
61:44 The ball is sent over by Jack Cork, Jason Shackell gets a block in. Inswinging corner taken left-footed by Michael McIndoe
from the right by-line, Simon Gillett manages to make a clearance.
61:20 Centre by David Bell, John Oster manages to make a clearance.
60:22 James Chambers delivers the ball.
57:32 Gareth Roberts is penalised for a handball. Aron Gunnarsson restarts play with the free kick.
56:34 Leon Best is flagged offside by the assistant referee. Free kick taken by Neil Sullivan.
55:52 David Bell has an effort at goal from outside the box which goes wide right of the goal.
54:20 The ball is crossed by David Bell, Mark Wilson manages to make a clearance. Corner taken by David Bell from the left by-line,
Jason Shackell makes a clearance.
53:41 Dean Shiels produces a right-footed shot from inside the area that goes over the bar.
52:58 Leon Best produces a mishit right-footed shot from deep inside the area which goes wide of the left-hand post.
51:47 Leon Best takes a shot. Save by Neil Sullivan. Corner taken left-footed by Michael McIndoe, Leon Barnett produces a header
from inside the area that goes over the crossbar.
48:43 The ball is delivered by Michael McIndoe.
48:38 David Bell sends in a cross.
48:23 The ball is sent over by Patrick Van Aanholt, clearance by Jason Shackell.
47:40 The offside flag is raised against Billy Sharp. Keiren Westwood takes the free kick.
46:33 Leon Best concedes a free kick for a foul on Jason Shackell. Jason Shackell restarts play with the free kick.
45:01 The second half kicks off.
45:00+0:58 The ref blows to end the first period.
45:00+0:26 The offside flag is raised against Leon Best. Neil Sullivan takes the free kick.
45:00+0:22 The ball is crossed by Patrick Van Aanholt.
44:17 Close range shot by Leon Best clears the bar.
43:02 David Bell delivers the ball, comfortable save by Neil Sullivan. Inswinging corner taken right-footed by David Bell, clearance
made by Jason Shackell.
41:23 Placed penalty missed by Leon Best.
41:23 Penalty awarded for a foul by Neil Sullivan on Leon Best.
40:07 A cross is delivered by James Chambers.
38:59 Centre by Gareth Roberts, blocked by David Bell.
38:34 Freddy Eastwood challenges Jason Shackell unfairly and gives away a free kick. Free kick taken by Simon Gillett.
36:53 The ball is crossed by Simon Gillett, clearance by Leon Barnett.
35:08 Handball decision goes against Leon Best. Direct free kick taken by Jason Shackell.
34:34 The assistant referee signals for offside against Leon Barnett. Neil Sullivan takes the indirect free kick.
33:38 Gareth Roberts concedes a free kick for a foul on Leon Best. Michael McIndoe delivers the ball from the free kick left-footed
from right channel.
31:10 Foul by Dean Shiels on David Bell, free kick awarded. Martin Cranie takes the free kick.
29:17 Michael McIndoe delivers the ball.
27:19 Free kick awarded for a foul by Jack Cork on Simon Gillett. Neil Sullivan takes the free kick. Free kick awarded for an unfair
challenge on Mark Wilson by Aron Gunnarsson. Free kick taken by James O'Connor.
26:15 Leon Best takes a shot.
22:47 Handball by Jack Cork. John Oster produces a strike on goal direct from the free kick.
21:32 Leon Barnett is adjudged to have handled the ball. Free kick crossed right-footed by Simon Gillett from right channel, James
McPake manages to make a clearance.
20:14 Simon Gillett produces a cross, James McPake manages to make a clearance.
19:26 Free kick awarded for an unfair challenge on Jason Shackell by Leon Best. Gareth Roberts restarts play with the free kick.
17:50 Foul by Simon Gillett on Leon Best, free kick awarded. Free kick crossed by Patrick Van Aanholt, Jason Shackell manages to
make a clearance.
17:44 The ball is sent over by Simon Gillett, clearance made by James McPake.
17:02 The ball is crossed by Dean Shiels.
16:16 Shot from just outside the area by Mark Wilson misses to the right of the target.
15:47 The ball is sent over by James Coppinger, James McPake manages to make a clearance. Corner taken right-footed by Dean Shiels,
Leon Best makes a clearance.
13:14 Unfair challenge on Billy Sharp by James McPake results in a free kick. Simon Gillett takes the free kick.
Correction - 12:38 Patrick Van Aanholt crosses the ball. The referee blows for offside. Neil Sullivan takes the free kick.
12:38 The ball is swung over by Patrick Van Aanholt, The official flags Michael McIndoe offside. Neil Sullivan takes the free kick.
12:03 Headed effort from inside the area by Freddy Eastwood strikes the post.
11:02 Freddy Eastwood challenges James Chambers unfairly and gives away a free kick. James Chambers restarts play with the free
9:36 Martin Cranie challenges Billy Sharp unfairly and gives away a free kick. John Oster takes the direct free kick.
8:36 Dean Shiels takes a shot. Keiren Westwood makes a fantastic save.
8:04 Leon Best fouled by Mark Wilson, the ref awards a free kick. Michael McIndoe takes the free kick.
3:39 James Coppinger sends in a cross, James McPake manages to make a clearance.
2:51 Leon Best challenges Gareth Roberts unfairly and gives away a free kick. Direct free kick taken by Neil Sullivan.
0:00 The match gets underway.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.