Swansea dramatically claimed a place in the Sky Bet Championship play-offs with a stunning 4-1 win at 10-man Reading.
City had needed to defeat Reading – and hope that Welsh rivals Cardiff lost to Hull or Nottingham Forest were well beaten by Stoke – to make the top six on better goal difference.
While Cardiff beat Hull 3-0, Forest lost 4-1 to Stoke – giving Swansea a top-six spot on goal difference.
Liverpool loanee Rhian Brewster gave Swansea an early first-half lead with a superb long-range effort.
Reading then had winger Yakou Meite sent off before the break for violent conduct but soon equalised from a George Puscas spot-kick.
Wayne Routledge restored Swansea's advantage midway through the second period and fellow substitute Liam Cullen added a third near the end.
Routledge struck again in the first minute of stoppage time to seal Swansea's spot.
Swansea had taken 14 points from a possible 24 in the post-lockdown period, moving up from 11th place to seventh prior to kick off at Madejski Stadium.
They trailed both Forest and Cardiff by three points.
Swansea began brightly in Berkshire, with 17-goal top scorer Andre Ayew to the fore with some surging runs and they were rewarded for their patient approach work when they took the lead in the 17th minute.
There seemed to be little danger when Brewster collected possession 25 yards out but he fired in a superb drive that home goalkeeper Rafael appeared to react to far too slowly.
It was Brewster's 10th goal in 20 appearances since moving from Anfield to the South Wales club in January.
Reading finally awoke, with Swansea goalkeeper Erwin Mulder having to make smart stops to deny John Swift and Meite.
Meite was sent off five minutes before the break after foolishly becoming involved in a shoving incident with Swansea defender Mike van der Hoorn.
But Reading equalised in the 43rd minute when Jake Bidwell clumsily fouled Andy Rinomhota and Puscas slammed home the penalty – his 14th goal of the campaign.
Swansea opened at pace in the second half, with Conor Gallagher shooting wildly wide after he had found himself free outside the home area.
Ayew then had a good chance to add to his impressive haul this term but glanced a header off target from a Gallagher corner.
Swansea's next opening came from a free-kick right on the edge of the Reading box.
Although Matt Grimes struck it cleanly and Rafael barely moved, the ball narrowly missed the left-hand post.
But Swansea did finally regain their lead when Routledge neatly controlled a long pass from Grimes and cleverly lobbed in over the advancing Rafael.
Cullen precisely converted a half-volley with six minutes left and then Routledge nodded in from close range in added time to clinch a top-six slot.