On an enthralling Friday packed with Championship action, Bolton's relegation to League One was confirmed with a 2-0 loss to Aston Villa.
The Wanderers, who have struggled for much of the season with the club in financial turmoil, will play in England's third tier seven years after their drop into the Championship from the Premier League.
Villa, who sent Bolton down thanks to goals from Jack Grealish and Tammy Abraham, equalled a club record run of nine straight league wins on Friday and are all but certain to feature in the play-offs.
Norwich would have secured promotion back to the Premier League if Sheffield United lost to Nottingham Forest and the Canaries beat Sheffield Wednesday in the evening.
However, United ensured Norwich would have to wait a little longer to make their promotion official thanks to goals from Mark Duffy and Enda Stevens, while Norwich themselves couldn't shove past Wednesday and needed a spectacular 97th minute free kick from Mario Vrancic to grab a point.
Leeds, a favourite team for neutrals since the appointment of Marcelo Bielsa, also had a day to forget, losing 2-1 to Wigan despite taking the lead shortly after Latics defender Cedric Kipre was sent off in the 14th minute.
Likely play-off contenders West Brom and Middlesbrough secured wins, Albion edging Hull 3-2 at the Hawthorns and Boro grinding out a Tony Pulis-style 1-0 success over the Welshman's former club Stoke. Bristol City and Derby lost ground on sixth placed Middlesbrough, both picking up draws.
Rotherham's hopes of beating the drop took another blow after losing a 4-3 thriller at Swansea, while Millwall moved three points clear of the Millers thanks to a 1-1 draw with Brentford at Griffin Park.
In the remaining two games, Preston smashed already relegated Ipswich 4-0, Callum Robinson and Lukas Nmecha both netting braces, while strikes from Danny Graham and Bradley Dack ensured Blackburn triumphed at Queens Park Rangers, who responded through Matt Smith.
A full roundup of Friday's results can be found below.
Bristol City 1-1 Reading
Sheffield United 2-0 Nottingham Forest
Millwall 1-1 Brentford
Leeds 1-2 Wigan
Middlesbrough 1-0 Stoke
Swansea 4-3 Rotherham
West Brom 3-2 Hull
Birmingham 2-2 Derby
Bolton 0-2 Aston Villa
Preston 4-0 Ipswich
Queens Park Rangers 1-2 Blackburn
Norwich 2-2 Sheffield Wednesday