The Sky Blues have finished in 5th place and secured a SkyBet Championship play-off spot with a 1-1 draw against Middlesbrough.
The Sky Blues took a deserved lead midway through the first half as Gustavo Hamer notched his 9th goal of the season.
Boro equalised in the final seconds of the first half, with Cameron Archer converting from a short corner routine.
The second half remained goalless but was enough to see the Sky Blues secure 5th place and a play-off spot.
Gustavo Hamer broke forward inside the opening minute to force a save from Zak Steffen in net.
The Brazilian’s effort was forced wide from a corner where Matty Godden attacked the ball at the front post but again was diverted away from danger.
Josh Eccles intercepted the ball in the final third and marched forward for City but his weak-footed effort was dragged wide of the post.
The Sky Blues took the lead soon after the 20 minute mark when Eccles and Godden combined with Hamer who dispatched into the bottom corner with a driven finish.
Despite a solid showing from the Sky Blues in the first half, Boro pulled level just before the half, Cameron Archer the scorer.
HALF-TIME: Middlesborough 1-1 Sky Blues
The first real chance of the half for City came through Hamer but the midfielder’s free-kick was saved from a tight angle.
The Sky Blues had a penalty shout waved away with the ball dropping on a Boro defender’s arm, but the referee deemed no handball.
Callum Doyle roamed forward with less than ten minutes to go and fired from range but his effort failed to trouble Steffen.
The score remained tied but was confirmed the Sky Blues best ever Championship finish and secured a play-off spot.
FULL-TIME: Middlesborough 1-1 Sky Blues
Scorers: Gustavo Hamer (22’), Cameron Archer (45’)
Yellow cards: Liam Kelly (25’), Kyle McFadzean (69’), Callum Doyle (83'), Isiah Jones (83')
Attendance: 32,187
Sky Blues XI: Ben Wilson (GK), Callum Doyle, Kyle McFadzean, Liam Kelly (C), Brooke Norton-Cuffy, Luke McNally, Viktor Gyökeres, Matty Godden, Jake Bidwell, Josh Eccles (Jamie Allen 81'), Gustavo Hamer.
Unused subs: Simon Moore (GK), Jonathan Panzo, Josh Wilson-Esbrand, Ben Sheaf, Tyler Walker, Fankaty Dabo.
Middlesbrough XI: Zack Steffen (GK), Alex Mowatt (Dan Barlaser 65’), Tommy Smith, Riley McGree, Paddy McNair, Isiah Jones, Darragh Lenihan (C), Chuba Akpom, Ryan Giles, Cameron Archer (Matt Crooks 76), Hayden Hackney.
Unused subs: Liam Roberts (GK), Darnell Fisher, Marc Bola, Rodrigo Muniz, Sonny Finch.