Match ends, Coventry City 1, Middlesbrough 2.
Middlesbrough came from behind to beat Coventry City and reignite their Championship play-off push.
Both sides had looked set to continue their indifferent form with a draw until George Saville won it for the visitors late on.
The second half was low on quality, but Jonny Howson made a surging run to the byline and played the ball across the face of goal for Saville to tap into an empty net.
Coventry had gone ahead early on when Boro centre-back Anfernee Dijksteel diverted the ball into his own net after Sam McCallum's long throw-in caused confusion in the six-yard box.
The visitors improved and were rewarded shortly before half-time when Grant Hall headed in Paddy McNair's free-kick at the back post to level.
Having taken just a single point from home games against Bristol City and Cardiff City, Neil Warnock's side registered back-to-back away wins to keep them within three points of the top six.
Coventry, meanwhile, have won just once in nine league games and remain six points above the bottom three.
The Sky Blues are without a win in their past three games and could not repeat their impressive last home performance when they deservedly beat title contenders Brentford.
After Dijksteel had presented them with an early lead, Gustavo Hamer came closest to extending that when he fired narrowly wide from Liam Kelly's lay-off.
Boro went close when Neeskens Kebano's shot was blocked on the line by Coventry centre-back Michael Rose before Hall headed his first goal for the club.
Coventry struggled to impose themselves after the break and their next concerted spell of pressure came shortly before substitute Saville won it for Boro.
Matty James and Hamer both shot wide, while the Dutchman saw a shot deflected behind for a corner in stoppage-time.
Coventry City manager Mark Robins told BBC CWR:
"There wasn't a lot in that game. They do what they do and we do what we do.
"We ended up not getting the balance right in the first half and probably went too long too often despite taking the lead.
"They get you into positions where you don't want to be and the changes they were able to make off the bench put us under pressure and made the difference in the end.
"There were some things we did in the second half where I thought we were better, but the irony is they've ended up getting the better of us.
"There's that little bit of know-how and experience that gave them a little bit of a boost."
Middlesbrough manager Neil Warnock told BBC Radio Tees:
"It was a difficult match on a tough pitch and they've changed their style to be very direct.
"It took us a bit of adapting, but we got there in the end. It was really disappointing to concede from another long throw-in, it makes you wonder why we bother marking anyone.
"But Paddy McNair's delivery from that free-kick was different class and it was great to see Grant Hall on the end of it.
"I always thought in the second half we could play better and the substitutes made that key difference for us in the end."
- 5McFadzeanBooked at 90mins
- 6KellySubstituted forJamesat 71'minutes
- 7TavernierSubstituted forSavilleat 85'minutes
- 17McNairBooked at 54mins
- 27BolaSubstituted forJohnsonat 74'minutes
- 10AkpomBooked at 31minsSubstituted forBolasieat 74'minutes
- 21KebanoSubstituted forWatmoreat 73'minutes
- Graham Scott
- Shots on Target
Second Half ends, Coventry City 1, Middlesbrough 2.
Attempt missed. Yannick Bolasie (Middlesbrough) left footed shot from the centre of the box is close, but misses to the left. Assisted by George Saville.
Kyle McFadzean (Coventry City) is shown the yellow card for hand ball.
Hand ball by Kyle McFadzean (Coventry City).
Corner, Coventry City. Conceded by Grant Hall.
Attempt blocked. Gustavo Hamer (Coventry City) right footed shot from outside the box is blocked. Assisted by Callum O'Hare.
Foul by Callum O'Hare (Coventry City).
Marvin Johnson (Middlesbrough) wins a free kick in the defensive half.
Goal! Coventry City 1, Middlesbrough 2. George Saville (Middlesbrough) right footed shot from very close range to the bottom right corner.
Attempt blocked. Duncan Watmore (Middlesbrough) left footed shot from very close range is blocked. Assisted by Jonny Howson.
Substitution, Middlesbrough. George Saville replaces Marcus Tavernier because of an injury.
Offside, Coventry City. Callum O'Hare tries a through ball, but Tyler Walker is caught offside.
Attempt blocked. Jonny Howson (Middlesbrough) right footed shot from outside the box is blocked. Assisted by Marvin Johnson.
Attempt missed. Gustavo Hamer (Coventry City) left footed shot from the right side of the box is high and wide to the left. Assisted by Fankaty Dabo following a corner.
Corner, Coventry City. Conceded by Dael Fry.
Attempt blocked. Matty James (Coventry City) right footed shot from outside the box is blocked. Assisted by Callum O'Hare.
Gustavo Hamer (Coventry City) wins a free kick in the defensive half.
Foul by Anfernee Dijksteel (Middlesbrough).
Substitution, Middlesbrough. Marvin Johnson replaces Marc Bola.
- From OJ Simpson to the LA riots: How the helicopter changed the news
- Zapped: Office drone Brian is transported to a strange new world...