Sunderland claimed the Coca-Cola Championship title on the final day as West Brom, Wolves and Saints sealed their places in the promotion play-offs along with Derby.
Knowing they needed a win to be sure of first place, Birmingham slipped to a 1-0 defeat at Preston, allowing Roy Keane's side to leapfrog them into top spot with a 5-0 win at Luton.
The Black Cats made a perfect start as Anthony Stokes' smart finish (4 mins) and Daryl Murphy's long-range screamer (6) gave them a two-goal half-time cushion.
Stokes set up Murphy (46) to make it three before Ross Wallace (77) and David Connolly (86) made it a walkover.
Birmingham missed a string of second-half chances as their title hopes evaporated thanks to Simon Whaley's 85th-minute winner.
North End dominated the first half and hit the post through David Nugent, although Sebastian Larsson then struck bar for Blues in a goalless opening period.
The win was not enough to give Paul Simpson's men a play-off place.
West Brom crushed Barnsley 7-0 to clinch fourth spot.
The game was over by the break after Kevin Phillips (21), Nathan Ellington's brace (25pen, 36) and Robert Koren's impudent flick put the Baggies four ahead.
Ex-Saint Phillips soon made it five (53) and then completed his hat-trick (72), and Zoltan Gera (75) completed the rout.
Wolves recovered from a goal down to emphatically book their place in the play-offs with a 4-1 win at Leicester.
Iain Hume (three) gave the Foxes an early lead but Mick McCarthy's men fought back well to lead at the interval through Seyi George Olofinjana's strike from a scramble 25 minutes in and Michael Kightly's cheeky backheel (33).
Gareth McAuley's own goal (53) gave Wolves breathing space and Patrick Kisnorbo was then sent packing for two bookings, as Andy Keogh's penalty (84) completed the scoring.
Saints hammered Southend 4-1 to claim the all-important sixth spot.
Adam Barrett's scorching left-foot volley (13) put the Shrimpers ahead in their Championship swansong, but Kenwyne Jones (29) nodded Saints level after good work by young full-back Gareth Bale.
Leon Best (48) tapped George Burley's side into a deserved lead and then added a third to ease the home side's jitters, before Jones wrapped it up.
Stoke's 1-1 draw at QPR was not enough to extend the Potters' season.
Rangers led after Martin Rowlands beat Steve Simonsen at the near post in the sixth minute but Sampsa Timoska was dismissed with 20 minutes left.
Mamady Sidibe (84) gave City a glimmer of hope but it never looked like being enough.
Colchester's outside hopes were dashed as Crystal Palace won 2-0 at Layer Road thanks to goals from James Scowcroft and Ben Watson.
Derby, already safe in third, beat relegated 10-man Leeds 2-0 at Pride Park.
Darren Currie fired the Rams one up deep into first-half injury-time and Robert Bayly was dismissed for United late on before Tyrone Mears (86) clinched the win.
Coventry won 2-1 at Burnley - Michael Mifsud (40) put City ahead with the first shot of the match and Jay Tabb (55) made it two before Paul McVeigh (62) brought the Clarets back into the game Hull, safe after Leeds were docked 10 points for going into administration, lost 2-1 to Plymouth.
Peter Halmosi (45) and Sylvan Ebanks-Blake (59) netted for Argyle before Stuart Elliott (61) hit a consolation.
Francis Jeffers' crisp shot (four) put Ipswich ahead against Cardiff, Paul Parry levelled before the break, but Jonathan Walters (68 and 79) gave Town a 3-1 win at Portman Road.
Goals from Jermaine Johnson, Deon Burton and Dickson Etuhu's comical own goal handed Sheffield Wednesday a 3-2 win over Norwich, for whom Robert Earnshaw (56) and Dion Dublin (75) scored.
Comments: Our rules
We want our comments to be a lively and valuable part of our community - a place where readers can debate and engage with the most important local issues. The ability to comment on our stories is a privilege, not a right, however, and that privilege may be withdrawn if it is abused or misused.
Please report any comments that break our rules.
Read the rules hereComments are closed on this article