Middlesbrough will play Championship football again next season
Coventry won 1 - 0 at the Riverside and make it through to the play-off final.
Gustavo Hamer fired Coventry to within one game of the Premier League as they scrapped their way past Middlesbrough into the Sky Bet Championship play-off final.
The Brazil-born midfielder's sweet 57th-minute strike clinched a 1-0 aggregate victory in a desperately tight second leg at the Riverside Stadium.
Mark Robins' side will meet Luton at Wembley on May 27 with a return to the top flight for the first time since 2001 up for grabs.
It proved the perfect ending to a day on which the Sky Blues announced their manager had agreed a new four-year contract, but an intensely disappointing one for opposite number Michael Carrick, whose side will spend a seventh year in the second tier as a result.
Boro started in confident mood with left-back Ryan Giles threatening repeatedly, although they almost shot themselves in the foot after eight minutes when Viktor Gyokeres picked off Tommy Smith's ill-judged back-pass, but goalkeeper Zack Steffen came to the rescue with a fine save as the striker attempted to round him.
City gradually worked their way into the game and forced a series of free-kicks with defender Kyle McFadzean heading high over from Hamer's 17th-minute cross, and as Liam Kelly and Ben Sheaf started to make their mark in the middle of the field, there was little to choose between the teams.
Both Chuba Akpom and Cameron Archer felt the full force of Coventry's rugged approach as Sheaf and then McFadzean clattered into them, and referee David Coote eventually lost patience and booked Callum Doyle for a clumsy challenge on Akpom.
Jake Bidwell bravely blocked Marcus Forss' shot from Giles' deep cross five minutes before the break and Darragh Lenihan headed an Alex Mowatt corner straight at Ben Wilson, but the tie remained finely poised when the half-time whistle sounded.
The Sky Blues returned reinvigorated with Jamie Allen conducting affairs menacingly behind lone striker Gyokeres, although the midfielder miskicked from just six yards out after Gyokeres and Sheaf had capitalised on Akpom's 50th-minute error.
And it was the visitors who forced their way in front when Sheaf pounced on Giles' loose pass to find Gyokeres, who evaded Steffen's challenge before Hamer took over, stepped inside Forss and fired into the top corner.
He might have doubled his tally with 15 minutes remaining, but saw his free-kick crash back off the crossbar with Steffen beaten to preserve Boro's fading hopes.
But despite a last-gasp flurry during which substitute Matt Crooks had the ball in the net from an offside position, Boro were unable to force extra-time.