Norwich secured a Premier League return – and moved within a point of the Championship title – by beating Blackburn 2-1 at a euphoric Carrow Road.
The Canaries knew they had one foot in the top flight before the game, needing only a draw, but made sure with a win that should have been far more comprehensive.
Goals from Marco Stiepermann and Mario Vrancic put Daniel Farke’s side 2-0 up inside 20 minutes, only for Lewis Travis to pull one back immediately for the visitors.
But that was how it stayed to spark celebrations in East Anglia.
Sheffield United all but sealed promotion alongside Norwich by beating Ipswich 2-0 at Bramall Lane.
Scott Hogan fired the Blades into a half-time lead and Jack O’Connell’s header midway through the second period put the game beyond already-relegated Ipswich.
The end of Blades’ 12-year top-flight exile will be mathematically confirmed if Leeds fail to beat in-form Aston Villa at Elland Road on Sunday. Marcelo Bielsa’s men are now six points behind the Blades with a far inferior goal difference.
âï¸âï¸âï¸ FULL TIME | It is all over hereâ¦ goals from Scott Hogan and Jack OâConnell give United victory in the final home game, swelling the points tally to 88 with 1 to play#twitterblades #sufc #ForgedinSteel pic.twitter.com/radpGCDjiO— Sheffield United (@SheffieldUnited) April 27, 2019
Derby edged closer to securing the final play-off place with a 2-0 win at 10-man Bristol City.
Frank Lampard’s side kept their noses in front of closest rivals Middlesbrough, who also won, while City’s hopes of a top-six finish were dealt a major blow.
Tom Lawrence’s deflected shot gave Derby a half-time lead and the Robins were reduced to 10 men with half an hour remaining when Antoine Semenyo was shown a straight red card for his challenge on Tom Huddlestone.
Jayden Bogle added Derby’s second with 13 minutes left to keep his side ahead of Middlesbrough on goal difference and with a game in hand.
Boro kept their play-off hopes alive heading into the final fixture next week after beating Reading 2-1 at the Riverside.
Tony Pulis’ side struck twice before the interval through Lewis Wing and Britt Assombalonga’s penalty, awarded for Andy Yiadom’s foul on George Saville, after Danny Loader had given Reading an early lead.
Rotherham’s 2-1 defeat at West Brom condemned them to relegation.
Clark Robertson headed Rotherham into the lead early in the second half and it appeared they would head into the final day with hope.
But Jay Rodriguez converted a 77th-minute penalty after Michael Smith’s foul on Dwight Gayle, and Rekeem Harper fired the Baggies’ winner two minutes later to lift his side to within two points of Leeds.
Sheffield Wednesday hit back from two goals down to draw 3-3 at Preston despite playing the final 10 minutes with 10 men.
Jayden Stockley’s header and Tom Lees’ own goal put Preston 2-0 up at half-time before Barry Bannan reduced the deficit soon after the restart.
Alan Browne restored Preston’s two-goal advantage just after the hour mark, but Fernando Forestieri and Atdhe Nuhiu both struck with headers to haul the Owls level.
Wednesday defender Dominic Iorfa was sent off for his tackle on Darnell Fisher in the 80th minute.
Nottingham Forest climbed one place to 10th after winning 1-0 at QPR thanks to Iran striker Karim Ansarifard’s solitary strike 10 minutes into the second period.
QPR striker Nahki Wells’ late penalty was saved by Forest goalkeeper Costel Pantilimon.
Swansea let slip a 2-0 lead as they were held 2-2 by Hull at the Liberty Stadium.
Oli McBurnie’s 22nd and 23rd goals of the season put Swansea in control before Hull hit back through Jarrod Bowen’s 22nd and an 84th-minute effort from substitute Nouha Dicko.
Millwall secured their survival by drawing 0-0 at home against Stoke, for whom James McClean hit the crossbar in a lunchtime kick-off at the Den.
The Lions, who have two games left, are four points ahead of Rotherham and cannot be overhauled.
Birmingham were held 1-1 at home by Wigan, who equalised through Nick Powell in first-half stoppage time after Lukas Jutkiewicz’s early opener.
Relegated Bolton’s final home game of the season against Brentford was postponed after their players went on strike in protest at unpaid wages.