Wolves secured a return to the Premier League without kicking a ball on Saturday after Brentford stole a dramatic 1-1 draw at promotion-chasing Fulham.
The Cottagers needed a win in the late kick-off to regain second place from Cardiff in the Sky Bet Championship and to deny Wolves a top-flight spot for the first time since 2012.
Aleksandar Mitrovic’s 70th-minute goal had looked like putting Wolves’ party on hold but Neal Maupay’s last-gasp header for Brentford sent Nuno Espirito Santo’s side up.
Wolves can celebrate at home to Birmingham on Sunday, but third-placed Fulham will have to gather themselves after falling a point and a place behind Cardiff – who have a game in hand.
The Bluebirds left it late but kept themselves on course for an automatic promotion place with a 2-0 win at Norwich.
Neil Warnock’s side know three wins from their remaining four games will be enough to join Wolves in the Premier League but they had to dig deep to earn a vital three points at Carrow Road.
Kenneth Zohore squeezed the ball past Angus Gunn in the 86th minute before Junior Hoilett’s goal in added time ensured Cardiff’s two-game losing streak was brought to an end.
Middlesbrough stormed into the play-off places after coming from behind to beat Bristol City 2-1 at the Riverside Stadium.
Milan Djuric volleyed the visitors into a 13th-minute lead before George Friend levelled for Boro five minutes later.
Daniel Ayala then headed home the winner in the 68th minute, moving Middlesbrough up to fifth while also denting Bristol City’s own top-six hopes.
Veteran striker Steve Morison struck his fifth goal of the season for Millwall as they came back to draw 1-1 against fellow play-off hopefuls Sheffield United in the early kick-off.
Leon Clarke opened the scoring for the Blades in the 74th minute, but Morison equalised instantly to grab his side a point.
The sixth-placed Lions remain unbeaten in the league since New Year’s Day and Sheffield United, who are ninth, have not lost at home since late January.
Derby slipped out of the top six, but Burton moved off the bottom and to within five points of safety after a 3-1 victory over the Rams at the Pirelli Stadium.
Liam Boyce tapped home from close range to put the hosts in front after 24 minutes, but their lead did not last long as David Nugent equalised moments later.
Luke Murphy curled a beautiful effort past Scott Carson to restore the Brewers’ lead just before the break and Lucas Akins added a third in the 68th minute.
Oli McBurnie’s added-time equaliser secured a vital 2-2 draw for Barnsley at home to fellow strugglers Bolton.
Gary Gardner scored from 10 yards midway through the first half for the Tykes before Adam Le Fondre levelled from the spot after 82 minutes.
Craig Noone thought he had won it for Bolton three minutes later, but McBurnie had the final say to keep Barnsley within two points of the 21st-placed Trotters.
Sunderland slipped to the foot of the table and remain six points below Bolton after drawing 2-2 at Reading.
Liam Kelly gave the Royals the lead from the penalty spot after Lee Camp brought down Jon Dadi Bodvarsson in the box after 20 minutes.
Paddy McNair fired home a stunning equaliser for the Black Cats just after the break before Lee Cattermole’s first goal since August 2014 put the visitors in front in the 66th minute.
Yann Kermorgant restored parity for Reading with 11 minutes remaining to leave Chris Coleman’s side on the brink with three games left.
Ben Brereton’s late penalty and Joe Lolley’s goal in added time secured an unlikely 2-1 win for Nottingham Forest against Ipswich, who had led through Grant Ward’s first-half header.
Elsewhere, Callum Robinson’s double sealed a 2-1 win for Preston against QPR, who had Matt Smith on the scoresheet, while Jordan Rhodes scored the only goal in Sheffield Wednesday’s 1-0 win at Hull.