Bristol City moved four points clear of third-from-bottom Coventry after beating their relegation rivals.
The visitors went ahead through a Jon Stead own goal when he flicked Sammy Clingan's free-kick beyond City keeper Dean Gerken.
But Stead bundled in an equaliser and Yannick Bolaise turned and fired in to score City's second.
The home side had Brett Pitman sent off but still added a third, thanks to Chris Wood, in injury-time.
Bristol City and Coventry games left
West Ham (h)
It was a crucial win for the Ashton Gate club as it helped them move one step closer to Championship safety, while Coventry's relegation fears will only be increased with four games left.
A defeat which also ended Coventry's seven-match unbeaten run had begun with Sky Blues keeper Joe Murphy quickly in action to keep out long-range strikes from Pitman and Stead.
He also did well to save a Ryan McGivern header before Neil Kilkenny's superb half-volley from almost 30 yards flashed just wide of the Coventry goal.
When a City player did score it was at the wrong end as Stead put through his own goal, but the home side kept up the pressure and were eventually rewarded early in the second half.
A Pitman corner was helped on by Cole Skuse and Stead applied the finishing touch.
The home side thought they had taken the lead with an Andre Amougou header only for the effort to be disallowed for a foul by Stead on keeper Murphy.
In what turned out to be an inspired substitution, Bolasie's introduction with eight minutes to play helped City take the lead when he steered in a shot from 12 yards.
Pitman's dismissal for a foul on Jordan Clarke set up a nervy finish for the home fans but their fears concerns were eased with Wood's injury-time goal.
Bristol City boss Derek McInnes: "We will need the same commitment, if not more, to get anything at Birmingham on Saturday and the same applies to our other remaining games.
"To beat Nottingham Forest and Coventry in the space of three days is a magnificent effort by the players and I couldn't have asked for more.
"But the job is not done yet. All we have done is given ourselves a decent chance of staying up."
Coventry manager Andy Thorn: "I was pleased to go in 1-0 up at half-time because we hadn't played well.
"I thought we looked very leggy in the second half. We have some injuries and some knocks and numbers told on us in the end. Bristol looked fresher than we did.
"But we have been on a good run prior to this game and we will pick the players up and go again.
"We have enough games left to get ourselves out of trouble and Bristol probably have a tougher run-in, so it isn't over yet."
- 22 Gerken
- 04 Fontaine
- 26 Foster Booked
- 33 Amougou
- 36 McGivern
- 08 Kilkenny
- 14 Skuse
- 27 Adomah Booked (Bolasie - 82' )
- 37 Pearson (Ephraim - 78' )
- 09 Stead (Wood - 66' )
- 34 Pitman Dismissed
- 01 James
- 10 Ephraim
- 17 Bolasie
- 21 Cisse
- 39 Wood
- 01 Murphy
- 02 Keogh
- 03 Hussey (Christie - 67' )
- 15 Cranie
- 26 Clarke
- 04 Clingan
- 12 Deegan (Bigirimana - 86' )
- 16 Norwood
- 11 McSheffrey
- 14 McDonald (Nimely - 78' )
- 22 Platt
- 13 Dunn
- 31 Christie
- 37 Willis
- 34 Bigirimana
- 18 Nimely
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +3:45
Assist on the goal came from Neil Kilkenny.90:00 +3:45 Goal scored
Goal! - Chris Wood - Bristol C 3 - 1 Coventry Chris Wood scores a goal from inside the penalty box to the bottom right corner of the goal. Bristol City 3-1 Coventry.90:00 +2:52
Short corner worked by Hogan Ephraim.88:48
The ball is crossed by Alex Nimely, Clive Platt takes a shot. Save made by Dean Gerken.87:46
The ball is crossed by Cyrus Christie.86:28
Joe Murphy restarts play with the free kick.86:28 Dismissal
Dismissal Brett Pitman shown a red card for serious foul play.86:09
Brett Pitman gives away a free kick for an unfair challenge on Jordan Clarke.85:17 Substitution
Substitution Gael Bigirimana is brought on as a substitute for Gary Deegan.84:37
Brett Pitman takes a shot. Joe Murphy makes a save.83:14
Free kick crossed right-footed by Sammy Clingan from left by-line, Richard Foster manages to make a clearance.83:14 Booking
Booking Richard Foster is shown a yellow card for unsporting behaviour.83:07
Free kick awarded for an unfair challenge on Gary McSheffrey by Richard Foster.81:49
Assist by Brett Pitman.81:49 Goal scored
Goal! - Yannick Bolasie - Bristol C 2 - 1 Coventry Yannick Bolasie scores a goal from deep inside the penalty box low into the middle of the goal. Bristol City 2-1 Coventry.80:55
Direct free kick taken by Andre Amougou.80:55 Substitution
Substitution (Bristol City) makes a substitution, with Yannick Bolasie coming on for Albert Adomah.80:55
Gary McSheffrey gives away a free kick for an unfair challenge on Richard Foster.79:23
Cole Skuse has an effort at goal from outside the penalty box which goes wide right of the target.
Free kick awarded for an unfair challenge on Albert Adomah by Gary McSheffrey. Direct free kick taken by Andre Amougou.77:03
Joe Murphy takes the free kick.77:03 Substitution
Substitution Alex Nimely comes on in place of Cody McDonald.77:03 Substitution
Substitution Hogan Ephraim on for Stephen Pearson.77:03
Albert Adomah challenges Sammy Clingan unfairly and gives away a free kick.76:35
Brett Pitman takes a inswinging corner from the left by-line played to the near post, clearance by Sammy Clingan.71:53
Shot on goal by Richard Foster from just inside the area goes over the target.69:00
Gary McSheffrey takes a shot. Blocked by Richard Foster. Corner taken right-footed by Sammy Clingan from the left by-line, save by Dean Gerken.67:26
Jordan Clarke produces a cross, Headed effort from deep inside the area by Clive Platt misses to the right of the goal.66:44 Substitution
Substitution Chris Hussey goes off and Cyrus Christie comes on.65:20 Substitution
Substitution (Bristol City) makes a substitution, with Chris Wood coming on for Jon Stead.63:04
The ball is crossed by Albert Adomah, blocked by Chris Hussey. Brett Pitman takes the outswinging corner, Jordan Clarke makes a clearance.60:15
Inswinging corner taken right-footed by Brett Pitman from the left by-line, Liam Fontaine gives away a free kick for an unfair challenge on Joe Murphy. Joe Murphy takes the direct free kick.59:32
Richard Foster produces a cross, Jon Stead takes a shot. Save by Joe Murphy. Brett Pitman takes the inswinging corner, clearance by Clive Platt.57:10
Ryan McGivern sends in a cross, save by Joe Murphy.56:24
Clive Platt is flagged offside by the assistant referee. Free kick taken by Dean Gerken.56:11
Free kick awarded for a foul by Stephen Pearson on Richard Keogh. Joe Murphy takes the direct free kick.54:19
Andre Amougou challenges Cody McDonald unfairly and gives away a free kick. Sammy Clingan takes the free kick.52:19
The ball is swung over by Albert Adomah, save by Joe Murphy.48:59
Clive Platt is adjudged to have handled the ball. Free kick crossed left-footed by Ryan McGivern from left wing, Clive Platt makes a clearance.46:35
Cole Skuse provided the assist for the goal.46:35 Goal scored
Goal! - Jon Stead - Bristol C 1 - 1 Coventry A goal is scored by Jon Stead from close range to the bottom left corner of the goal. Bristol City 1-1 Coventry.45:38
The ball is crossed by Jon Stead, Richard Keogh gets a block in. Corner taken right-footed by Brett Pitman, Cole Skuse takes a shot. Save made by Joe Murphy.45:01
The second half has started.45:00 +1:22 Half time
Half Time The match has reached half-time.45:00 +1:01
The ball is crossed by Jon Stead, Joe Murphy makes a save.43:53
The ball is sent over by Richard Foster.42:15
Neil Kilkenny produces a right-footed shot from just outside the box that goes wide left of the target.40:42
Ryan McGivern gives away a free kick for an unfair challenge on Sammy Clingan. Direct free kick taken by Joe Murphy.38:40
Ryan McGivern produces a cross, save by Joe Murphy.37:43 Booking
Booking Albert Adomah goes into the referee's book.36:30
Cole Skuse takes a shot. Richard Keogh gets a block in. Corner taken right-footed by Brett Pitman, Richard Keogh manages to make a clearance.35:59
Centre by Richard Foster, blocked by Oliver Norwood. Outswinging corner taken right-footed by Brett Pitman, Richard Keogh makes a clearance.32:22
Assist by Sammy Clingan.32:22 Goal scored
Goal! - Jon Stead - Bristol C 0 - 1 Coventry Own goal by Jon Stead. Bristol City 0-1 Coventry.31:30
Unfair challenge on Oliver Norwood by Albert Adomah results in a free kick. The free kick is swung in right-footed by Sammy Clingan.30:47
Gary McSheffrey handles the ball and concedes a free kick. Ryan McGivern restarts play with the free kick.29:19
Liam Fontaine gives away a free kick for an unfair challenge on Clive Platt. Sammy Clingan delivers the ball from the free kick right-footed from right channel.28:45
Long range shot from Neil Kilkenny misses to the left of the goal.28:07
Liam Fontaine takes a shot. Blocked by Richard Keogh. Corner taken right-footed by Brett Pitman from the left by-line, clearance by Clive Platt.25:20
Effort on goal by Jon Stead from just inside the area clears the crossbar.23:52
Free kick awarded for a foul by Gary Deegan on Jon Stead. Ryan McGivern crosses the ball in from the free kick, clearance by Clive Platt.20:50
The ball is delivered by Oliver Norwood.19:42
Oliver Norwood concedes a free kick for a foul on Albert Adomah. Andre Amougou delivers the ball from the free kick right-footed from right wing, clearance made by Richard Keogh.17:59
Cody McDonald takes a shot. Blocked by Ryan McGivern. Corner taken left-footed by Gary McSheffrey, save by Dean Gerken. Inswinging corner taken by Cody McDonald from the left by-line, Ryan McGivern manages to make a clearance. Gary McSheffrey takes a inswinging corner from the right by-line to the near post, clearance made by Jon Stead.17:18
Cole Skuse takes a shot. Blocked by Richard Keogh.16:36
Gary McSheffrey takes a shot. Save by Dean Gerken.14:34
Handball by Clive Platt. A cross is delivered by Richard Foster, Andre Amougou takes a shot. Joe Murphy makes a save.12:47
Free kick awarded for an unfair challenge on Jon Stead by Martin Cranie. Albert Adomah delivers the ball, Ryan McGivern takes a shot. Joe Murphy makes a save.11:34
Jon Stead concedes a free kick for a foul on Gary Deegan. Joe Murphy takes the free kick.8:50
The referee blows for offside. Indirect free kick taken by Sammy Clingan.6:44
Effort from deep inside the area by Cody McDonald misses to the left of the goal.6:22
Jon Stead takes a shot. Save made by Joe Murphy.3:47
The assistant referee flags for offside against Ryan McGivern. Joe Murphy restarts play with the free kick.2:51
Brett Pitman takes a shot. Save by Joe Murphy.0:00
The match begins.
Live data and text provided by our data suppliers