Southampton secured promotion to the Barclays Premier League with a 4-0 win over Coventry in front of a jubilant sell-out crowd at St Mary's.
After enduring a nervy start in which Coventry created chances, Southampton took control of their fate with two goals in three minutes.
Billy Sharp stuck out a toe to turn Adam Lallana's volleyed shot past Joe Murphy in the 16th minute, and moments later Jose Fonte's stooping header found the net to make it 2-0.
When Jos Hooiveld lashed in a third just before the hour mark and Lallana notched a fourth moments later, the party got under way.
That meant West Ham had to settle for third place even as a Carlton Cole brace sank Hull 2-1 at Upton Park.
Cole headed in Matt Taylor's cross late in the first half, and then turned in Henri Lansbury's pass early in the second.
Corry Evans scored a header for Hull with nine minutes to go and Richard Garcia thought he had a late equaliser, but it was ruled out for offside
Cardiff wrapped up the final play-off spot, but made their fans sweat first before beating Crystal Palace 2-1.
They fell behind at Selhurst Park when Wilfried Zaha linked up with Darren Ambrose to score a fine goal on the break after 13 minutes.
Cardiff struggled to impose themselves but Peter Whittingham scored a free-kick from a tight angle with his trusty left foot eight minutes into the second half and Don Cowie then volleyed in a second after the hour mark to turn it around.
Middlesbrough had needed Cardiff to drop points and to beat Watford, but got neither as they went down 2-1 at Vicarage Road, where Troy Deeney snatched an 88th-minute winner moments after Marvin Emnes had cancelled out Chris Iwelumo's close-range finish.
Champions Reading fell to a 2-0 defeat at Birmingham, substitute Adam Rooney firing in the opener after 24 minutes and Wade Elliott making sure with a 75th minute penalty after a handball by Jay Tabb.
The result meant only three points separated the Royals from third-placed West Ham at the season's finish.
The win lifts Birmingham into fourth above Blackpool, who were held 2-2 at Millwall.
Andy Keogh put the hosts in front after 12 minutes, but Ian Evatt headed Blackpool level quarter-of-an-hour later, and Nouha Dicko put them in front 20 minutes from time. However, Harry Kane's 83rd-minute strike denied Blackpool fourth place.
Leicester's season has not gone to plan, but they at least signed off with a win, beating Leeds 2-1 at Elland Road.
Martin Waghorn put them ahead late in the first half, and although Danny Webber's 82nd-minute strike looked to have earned the hosts a draw, Harry Panayiotou won it with almost the last kick of the game.
Rock-bottom Doncaster ended their spell in the Championship with a 3-1 defeat at home to Ipswich.
Tommy Smith headed the visitors in front after 10 minutes and Ryan Stevenson scored from range after half-an-hour, his shot striking the bar and bouncing back but only after crossing the line.
Fabien Robert pulled one back for Rovers but it was not enough to prevent a 26th defeat of the season as a Jason Scotland penalty 11 minutes from time gave Ipswich the breathing room they would need before Habib Beye's last-minute strike sent Rovers fans home with some consolation.
Portsmouth, who will join Doncaster in League One next season, lost 2-0 to Nottingham Forest who got a late brace from Dexter Blackstock, while there was a stalemate between Barnsley and Brighton at Oakwell.
Danny Ings' 76th-minute strike looked like giving Burnley a 1-0 win over Bristol City but Ryan Taylor levelled five minutes later to earn a point.
Derby and Peterborough shared the spoils in a 1-1 draw, with David Ball's 82nd-minute goal cancelling out Theo Robinson's early opener.