Leicester were crowned champions and condemned Doncaster to relegation on goal difference with a 1-0 win at the King Power Stadium.
Trailing to David Nugent's 75th-minute penalty, Rovers were still set to survive until Birmingham scored a 93rd-minute equaliser to draw 2-2 at Bolton.
Paul Caddis was Birmingham's hero as the Blues came from two goals down to seal the dramatic point that guaranteed their safety.
Lee Chung-yong and Lukas Jutkiewicz looked to have all but ended Birmingham's hopes when they put Bolton 2-0 up with just 14 minutes to play but Nicola Zigic gave the visitors hope with 12 minutes left before Caddis secured an incredible comeback.
Doncaster's defeat and Birmingham's draw ensured Blackpool also stayed up on the final day despite a 3-0 loss at home to Charlton.
Callum Harriott scored a second-half hat-trick to give the Addicks their third win in four games and ensure the visitors finish 18th in the table.
Millwall also guaranteed their Championship status as they edged past Bournemouth 1-0 thanks to Martyn Woodford's first-half winner.
Bournemouth looked on course for a late play-off bid a month ago but just one win in their last five matches means the Cherries finish 10th.
Yeovil Town ended their disappointing season with a 4-1 defeat at home to Middlesbrough who finish 12th.
Already relegated and bottom of the table, Yeovil fell behind to Danny Graham's close-range finish just after the half-hour mark.
James Hayter drew the hosts level soon after but two goals in three minutes from Emmanuel Jorge Ledesma and Lee Tomlin put Boro in control before half-time.
Ledesma added his second shortly after the interval to seal all three points for the visitors.
Brighton grabbed a last-minute winner to beat Nottingham Forest 2-1 and snatch the last play-off spot on a dramatic final day in the Sky Bet Championship.
The visitors came from behind in a thrilling contest but it was Leonardo Ulloa's stoppage-time time goal that sealed all three points for Brighton, who climbed above Reading into sixth.
Leicester 1 - 0 Doncaster
Ipswich 2 - 1 Sheff Wed
Leeds 1 - 1 Derby
Reading 2 - 2 Burnley
Blackpool 0 - 3 Charlton
Yeovil 1 - 4 Middlesbro
N Forest 1 - 2 Brighton
Millwall 1 - 0 Bournemth
Bolton 2 - 2 Birmingham
Watford 1 - 4 Huddersfld
Blackburn 4 - 3 Wigan
Barnsley 2 - 3 QPR
1 Leicester 102
2 Burnley 93
3 Derby 85
4 QPR 80
5 Wigan 73
6 Brighton 72
7 Reading 71
8 Blackburn 70
9 Ipswich 68
10 Bournemth 66
11 N Forest 65
12 Middlesbro' 64
13 Watford 60
14 Bolton 59
15 Leeds 57
16 Sheff Wed 53
17 Huddersfld 53
18 Charlton 51
19 Millwall 48
20 Blackpool 46
21 Birmingham 44
22 Doncaster 44
23 Barnsley 39
24 Yeovil 37
Matt Derbyshire took advantage of a Tomasz Kuszczak error to give Forest the lead in the 22nd minute but Stephen Ward drew Brighton level early in the second half before Ulloa's late heroics.
Brighton, who now face third-placed Derby in the play-off semi-finals, needed to better Reading's result against already promoted Burnley but the Royals were held to an agonising 2-2 draw at home.
It was all going to plan for the hosts when Burnley's Kieran Trippier turned the ball into his own net in the 16th minute but goals from Scott Arfield and Danny Ings turned the scoreline on its head.
Reading made it 2-2 just before the hour-mark when Garath McCleary found the net with a stunning long-range volley but the Royals were unable to find a winner and had their hearts broken when news of Brighton's late win filtered through.
Brighton's play-off opponents Derby were unable to finish the regular season on a high as they were held to a 1-1 draw at Leeds.
The Rams went into the match on the back of five consecutive victories and looked like they might make it six when Simon Dawkins gave the visitors an early lead.
Leeds salvaged a point shortly into the second half however when Matt Smith found the net with a well-placed lob.
Wigan are also through to the play-offs and maintain their place in fifth despite a 4-3 defeat at Blackburn.
Unbeaten in 12, Blackburn have finished the season at a canter and a made an early breakthrough when Tom Cairney broke the deadlock before Ivan Ramis equalised for Wigan.
Two goals from Rudy Gestede gave the home side a 3-1 advantage at the break but James McClean pulled Wigan back into the contest.
Blackburn were not to be denied however and Jordan Rhodes put the result beyond doubt with six minutes to play despite a late goal from Wigan's Nicky Maynard.
Wigan will now face Queens Park Rangers in the play-off semi-finals after Harry Redknapp's side finished fourth with a 3-2 win at Barnsley.
Barnsley, who were already relegated before kick-off, were 2-0 down at half-time after Charlie Austin's opener and a Jean-Yves Mvoto own-goal.
Chris O'Grady pulled a goal back for the home side early in the second half but Suk-young Yun restored Rangers' two-goal advantage before O'Grady added a second late on.
Ipswich finished in the top 10 after Paul Green's second-half goal gave the Tractor Boys a 2-1 win at home to Sheffield Wednesday.
Wednesday's Kieran Lee had earlier cancelled out Tommy Smith's opener.
Watford endured a disappointing end to their campaign as the Hornets were thrashed 4-1 at home to Huddersfield.
All five goals came in the second half as Joe Lolley scored on his debut before substitute Danny Ward bagged a hat-trick to put the away side four to the good.
Troy Deeney scored a late consolation from the penalty spot for Watford, who finish the season 13th.