The Bluebirds confirmed their return to the Sky Bet Championship at the first attempt with a 3-1 win over Reading on Saturday afternoon.
With Bradford City and Stockport County dropping points on Saturday, goals from Rubin Colwill, Omari Kellyman and Perry Ng were enough to see City return to the second tier.
Brian Barry-Murphy made one change to the side that drew at Huddersfield Town in midweek with Gabriel Osho replacing Will Fish, who moved to the substitutes bench.
While the noise from the away end drowned out any home chants, it was the Royals who started quicker on the field. Forward Kelvin Ehibhatiomhan, winger Daniel Kyerewaa and defender Jeriel Dorsett all threatened in the opening half hour of action.
At the other end, it was Rubin Colwill and Alex Robertson who saw efforts saved, while a former Bluebird stopped City from opening the scoring 26 minutes in. Ollie Tanner's low shot was pushed out by Joel Pereira with Chris Willock looking favourite to reach the rebound. However, Andy Rinomhota made a fantastic recovery challenge to keep the scores level.
The deadlock was eventually broken before the half-time whistle and it went the way of the Bluebirds. Ryan Wintle's teasing ball into the penalty box was met by City's No.10 Colwill, who beautifully headed into the far corner, directly in front of the travelling fans.
With results going against City elsewhere, promotion back to the Championship today felt unlikely going into the second half, but the Bluebirds and their supporters were in the mood for celebrating. 55 minutes in Wintle got his second assist of the afternoon. With Tanner breaking down the right, Ryan chose to go with the man in the middle and Omari Kellyman timed his run to perfection, breaching the offside trap. With only the goalkeeper to beat, Kellyman took his time and picked his spot to double City's advantage.
The away end erupted with 20 minutes remaining. While City were in control on the pitch, it was a goal elsewhere that caused the celebration as Exeter City fighting for their lives in League One levelled against Stockport County. With the Bluebirds winning, and the Hatters drawing, it would have meant promotion was confirmed at Reading.
As is often the case in football, a complication was thrown in as Reading reduced the deficit after 73 minutes. Nathan Trott made a fine save initially, but Kyerewaa was on hand to slot in the rebound.
Jack Marriott made his return from injury after 74 minutes and within a minute the Royals' top scorer had a chance to level it. The striker was found with a long ball and with only Trott to beat shot straight at City's goalkeeper. The travelling fans would've been relieved by Trott's heroics, but news of Stockport County's third goal in Exeter City put a dampener on the moment.
City’s performance was worthy of a win, and it was confirmed in spectacular fashion late on. Perry Ng took aim from distance left-footed, and it was goalbound from the moment it left his foot. It was another goal of the season contender for City in a campaign full of impressive strikes.
The unpredictability of football struck again in added on time when news of a third Exeter City goal came through, with goalkeeper Jack Bycroft scoring a late equaliser in that clash.
YES! pic.twitter.com/znZc1GtcWP
— Exeter City FC (@OfficialECFC) April 18, 2026
With full-time at St James Park coming five minutes before the whistle in Reading, there was a jubilant final few minutes of celebration before it was finally confirmed. Cardiff City straight back up at the first attempt! Championship again, ole ole!
FINAL SCORE: READING 1-3 CARDIFF CITY
Reading: Pereira, Burns, O'Connor, Dorsett, Nyambe (Abrefa 88'), Wing, Rinomhota (Fraser 88'), Roberts (Ritchie 88'), Kyerewaa, Lane (Marriott 74'), Ehibhatiomhan. Subs Not Used: Norcott, Patton, Stickland.
Cardiff City: Trott, Ng, Osho, Lawlor (Fish 82’), Bagan, Wintle, Robertson (Turnbull 67'), R.Colwill (J.Colwill 82’), Tanner (Robinson 90’), Willock (Salech 82’), Kellyman. Subs Not Used: Turner, Scanlon.