Paul Caddis' 93rd-minute equaliser saved Birmingham City from relegation and sent Doncaster Rovers into League One on Saturday.
On a dramatic final day that also saw Brighton and Hove Albion claim the final play-off spot, stunning late drama at the Reebok Stadium kept Birmingham safe on goal difference as they claimed an unlikely 2-2 draw.
Lee Clark's side seemed destined to drop into the third tier of English football for the first time since 1994-95 when they trailed Bolton Wanderers 2-0 with 14 minutes left.
But Nikola Zigic's header rallied Birmingham before their late pressure ended with Caddis nodding in from close range to delight the club's travelling supporters.
Birmingham were excellent in the first half and had 11 shots on goal to the three of their opponents, but they could not find the all-important breakthrough.
City – who started the day in 22nd, one point adrift of safety - saw Lee Novak go close twice around the half-hour mark before the same player steered in from close range after a free-kick, only for the effort to be ruled out for a foul in the build-up.
Lee Chung-Yong's arrowed finish from eight yards in the 57th minute gave Bolton the lead and Lukas Jutkiewicz was quick to double their advantage.
Zigic gave Birmingham a lifeline in the 78th minute, though, when he nodded Mitchell Hancox's excellent cross in before sustained pressure eventually led to a dramatic leveller.
Caddis was to provide it, following in after Zigic's header was cleared off the line by Tim Ream to secure his side's survival in the most dramatic way.
Birmingham's draw meant Doncaster were relegated by virtue of an inferior goal difference after a 1-0 defeat at champions Leicester City.
David Nugent scored the game's only goal from the penalty spot with 15 minutes to play as Doncaster – promoted in equally dramatic scenes on the final day of League One last term – were sent down.
At the other end of the table, Leonardo Ulloa's 92nd-minute header gave Brighton a 2-1 win at Nottingham Forest, a result that saw them finish a point ahead of Reading.
Matt Derbyshire headed Forest in front in the 22nd minute, but Stephen Ward levelled proceedings eight minutes after the break.
And Ulloa was on hand to head in Craig Mackail-Smith's cross in stoppage time to extend his side's season.
Brighton lost to eventual play-off winners Crystal Palace in last year's semi-finals.
Reading finished seventh after a 2-2 home draw against already promoted Burnley.
Kieran Trippier's own goal was cancelled out by Scott Arfield and then Danny Ings as Sean Dyche's side took the lead.
A stunning Garath McCleary volley drew Reading level with 32 minutes to play but they were unable to find a late winner.
Derby County finished third and will meet Brighton in the play-offs, but saw their 10-match winning streak against Leeds United come to an end as Matt Smith cancelled out Simon Dawkins' early goal in a 1-1 draw at Elland Road.
QPR warmed up for the play-offs with a 3-2 win at already relegated Barnsley, while Wigan Athletic, who will face Harry Redknapp's side over two legs, lost 4-3 at eighth-placed Blackburn Rovers.
Yeovil Town's first season in the second tier of English football saw them finish bottom as they lost 4-1 to Middlesbrough at home, while Blackpool – who ended just two points above the relegation zone – slumped to a 3-0 defeat against Charlton Athletic.
Other results on Saturday saw Huddersfield Town win 4-1 at Watford, while Ipswich Town beat Sheffield Wednesday 2-1 and Millwall edged Bournemouth 1-0.
|Coach: D. Freedman|
for R. Hall 61'
for Chung-Yong Lee 81'
for J. Beckford 86'
|Witsel happier to face Hungary than Spain|
|Wilmots accepts pressure ahead of Hungary test|
|Slovakia can upset Germany again - Pekarik|
|Shaqiri unhappy with Poland celebrations after Euro 2016 exit|
|Grosicki struggled to watch Poland shootout win|
|Poland need Lewandowski to rediscover ruthless streak|
|Switzerland 1 Poland 1 (aet, 4-5 pens): Xhaka shocker costs Swiss after Shaqiri magic|
|Payet can handle hero status - Deschamps|
|Redmond joins Southampton on five-year deal|
|Sturridge: Sterling unfairly targeted over England performances|
|Wilmots: I want more from smiling De Bruyne|
|Croatia star Perisic unveils latest wacky hairstyle|
|Brazil´s Lucas Lima wants European move|
|Lloris tempers talk of Ireland revenge mission|
|Deschamps refuses to make France ´98 comparisons|
|O´Neill confident Ireland can shock France|
|Chiellini will give Morata a few kicks - Barzagli|
|England v Iceland: Rooney targets early goal|
|Italy´s Candreva ruled out of Spain match|
|Butland ready for pre-season after scan gives goalkeeper all-clear|
|Origi not underestimating Hungary|
|Plans drafted for Old Firm games to be played abroad|
|Boost for Germany as Boateng trains ahead of last 16|
|I never saw Ronaldo look in the mirror! - Ancelotti|
|Fabregas fears Brexit will damage Premier League|
|Roy not keen on Ireland allocation|
|Dyke backs Hodgson for new contract|
|Spain not as aggressive as 2012, claims Ancelotti|
|Ronaldo and Messi need each other – Ancelotti|
|Juve on the same level as Madrid and Barcelona - Dybala|
|Fabregas: Conte´s Italy will be tough|
|Argentina v Chile: New year, same Copa finalists|
|Ronaldo ´cannot be the whole of Portugal´ - Shilton|
|Messi: Neymar is an amazing person|
|Pekerman keen to finish Copa on high note|
|Rakitic: Ronaldo won´t sleep easily|
|Messi: Now is not a time to give nothing|
|Courtois expects to leave Chelsea in future|
|Less rest no problem for Portugal - Joao Mario|
|Euro 2016 Diary: Benteke rap and Nelly the elephant|
|Santos: Group-stage performances behind Portugal|
|Cacic: We cannot let Ronaldo show his strength|
|O´Neill hopes to blow Bale off course|
|Coleman impressed with Ramsey´s discipline|
|O´Neill fires derby passions ahead of Wales showdown|
|Coleman: Take emotion out of Northern Ireland clash|
|LFP sanctions six Nice players for flouting gambling rules|
|Hungary v Belgium: Lukaku targets last-four spot|
|Dyke hopes Brexit can help England youngsters|
|No favourites against Italy, says Koke|
|Krychowiak not thinking about PSG as Poland stand by Lewandowski|
|World Cup qualifying: Algeria, Cameroon and Nigeria drawn in same group|
|Brexit may damage Premier League´s pursuit of young European players|
|Germany v Slovakia: Weiss confident of repeat Augsburg success|
|France v Republic of Ireland: Long not on Henry revenge mission|
|Chelsea midfielder Baker extends Vitesse loan|
|Chiellini concerned over Brexit ´domino effect´|
|Staying in Euro 2016 gets Coleman´s vote|
|Nainggolan has a room with a balcony so he can smoke - Wilmots|
|Petkovic attempts Poland mind games|
|Wilmots would rather play Spain than Hungary|
|Morata deserves more than being a Madrid bargaining chip - Chiellini|
|AZ want record fee for Janssen|
|What does Brexit mean for European football?|
|I´m not tired, I feel sharp - Kane hits back at critics|
|Delighted Kiyotake hopes to prove his value|
|Premier League confident Brexit will not diminish its success|
|Neuer wary of Hamsik´s long-range shots|
|Genesio: Lyon do not have to sell|
|Morata thanks Juventus fans after Real Madrid return|
|Lapadula undergoes AC Milan medical|
|Santos: Not everything revolves around Ronaldo|
|Icelandic chihuahua prepares to chase the England rhino|
|Jakupovic signs new Hull City contract|
|Lagerback: Brexit will not affect England team|
|ES Setif disqualified from CAF Champions League|
|Gerland sees Kimmich as Lahm´s long-term successor|
|Navas ´recovering nicely´ from heel injury|
|Messi excited by future Barcelona challenges|
|Conte´s Italy like Atletico and Barcelona, says Xavi|
|Zidane the man to take Madrid forward, says Baptista|
|United States v Colombia: Hosts out to end Copa America on a high|
|Aubameyang: It´s my dream to play in Spain|
|Wenger not interested in France job|
|Ronaldo: Euro 2016 surprises end now for Portugal|
|Coke hopeful Sampaoli can exceed Emery at Sevilla|
|Maradona: Portugal too dependent on Ronaldo|
|´What a disaster´ - Messi takes aim at AFA|
|Guidetti: Nolito will thrive at City|
|Wanyama thanks Southampton fans following Spurs switch|
|Kranjcar: Rangers can push Celtic all the way|
|Euro 2016 Diary: Icelandic heaven and Rooney not feeling the love|
|Wenger respects Vardy, talks up Kante|
|Rooney wants to end ´disappointing´ tournament record for England|
|Di Maria in serious doubt for Copa America final|
|´We gave it all´, Alaba tells Austria fans|
|Euro 2016 Social Round-Up: Last 16 sides prepare for the knockout rounds|
|Osorio to stay on as Mexico manager despite Copa humbling|
|Tottenham complete Wanyama signing|
|Claridge: England are misusing Jamie Vardy|
|Marseille complete double swoop|
|Wales v Northern Ireland: Evans eager to prolong Irish dream|
|Underdog heroics justify UEFA´s bulkier Euros|
|Atletico Madrid president confirms Vrsaljko move|
|Rejecting Arsenal a ´mature´ move for Leicester star Vardy - Claridge|
|Switzerland v Poland: Seferovic targets final, Pazdan staying humble|
|Juanfran: Spain can use Atletico´s philosophy|
|´It’s always nice to finish above the English´ - Bale sticks the boot in again|
|Euro 2016´s top five moments so far: Payet cries a river as newcomers steal the show|
|Galatasaray fail in CAS appeal|
|´Nice will forever be in my heart´ - How France legend Just Fontaine kickstarted his career on the C|
|Team of the Euro 2016 group stage: Payet, Perisic join blistering Bale|
|The flop XI of the Euro 2016 group stage: Kane and Ibrahimovic join limp Lewandowski|
|O´Neill delighted with Northern Ireland draw placing|
|Germany optimistic on Boateng fitness|
|Croatia v Portugal: Cacic determined to spring another shock|
|Icelandic strongman Magnusson mocks Portugal´s Ronaldo|
|Noble expects West Ham stay for Payet|
|Petrov joins Villa for pre-season camp|
|´We always score our penalties´ - Hallgrimsson sends warning to England|
|Kalinic expects Croatia to progress|
|Rooney respect for Hodgson´s Slovakia gamble|
|Vardy stays at Leicester: Champions buoyed, but what next for Arsenal?|
|Lafferty backs Northern Ireland to go all the way|
|Elmohamady extends Hull stay|
|Hodgson demands ruthlessness from England to open up Iceland|
|´He was nearly dead six years ago´ - Coleman full of admiration for Duffy|
|Rangers seal Kranjcar deal|
|Iniesta wary of ´powerful´ Italy|
|I wanted to rest Gera - Storck|
|Gera living late career dream after waking from injury nightmare|
|Vardy to stay at Leicester after agreeing new contract|
|Morata still wanted by ´top Premier League clubs´|
|Sigurdsson warns Iceland of danger posed by golf buddy Kane|
|Pekerman furious with referee after Colombia´s Copa exit|
|Euro 2016 is wide open, says Cahill|
|Pizzi hails Chile´s ´winners´ mentality|
|Bjarnason hails team spirit among Iceland friends|
|Coentrao defends Ronaldo: ´Speak now, parrots!´|
|MLS Review: Alberg hat-trick inspires Union, RSL leave it late|
|Conte: I´m not from the moon, I know Spain are good|
|Santos wants more from Ronaldo|
|Colombia 0 Chile 2: Early goals see defending champions into Copa final|
|Martino receives Di Maria boost ahead of Copa final|
|De Gea thanks his critics for motivating him|
|Barca not contemplating Neymar exit|
|Pain before pleasure for Sigurdsson and Iceland´s heroes|
|Lavezzi remains upbeat despite Copa-ending injury|
|Smell of injustice: Swedish player cops farting red|
|Ibrahimovic ´very proud´ of Sweden career|
|Euro 2016 Diary: Germany grab the sunloungers, Benzema on the beach and life through a lens|
|´If you don´t know nothing, keep quiet´ - Deeney responds to speculation|
|Wilmots: Belgium must be more clinical|
|Vote remain and we´ll forgive you for 1966! - German newspaper wade into Brexit debate|
|Hamren: Sweden will never find another Ibrahimovic|
|Conte: Ireland got more than they deserved|
|O´Neill hails Ireland heroes|
|Hazard: Ibrahimovic not done yet|