Match ends, West Bromwich Albion 1, Stoke City 2.
Charlie Adam's late goal gave Stoke victory at West Brom as they completed their best league season since 1975.
City deservedly led when Albion defender Gareth McAuley turned in Marko Arnautovic's cross.
The Baggies equalised through Stephane Sessegnon's angled finish, but Adam's low strike from distance settled it.
Stoke end ninth on 50 points - their highest in six seasons back in the top flight - while West Brom are 17th, three points above the relegation zone.
Technically, the Baggies were still in danger of being relegated with defeat, but that would have required Norwich to beat Arsenal and somehow pull off a 17-goal swing in goal difference.
Norwich's loss ended any threat to West Brom, but narrowly avoiding the drop is little cause for celebration for a team that finished eighth last season.
Though Pepe Mel, appointed as manager in January following the dismissal of Steve Clarke in December, has kept Albion up, the Spaniard has managed only three league wins and is set for talks with chairman Jeremy Peace over his future.
West Brom's regression over the course of the season is in contrast to the progress made by Stoke in Mark Hughes's first season in charge.
An unpopular choice to replace Tony Pulis for some sections of the City fans, Hughes has overcome a wobble that saw City lie only three points above the relegation zone in January to guide them to their highest finish in nearly 40 years.
A change of style has seen Stoke average more passes per game than in any Premier League season under Pulis and that comfort on the ball saw the visitors control the first half.
Despite Sessegnon hitting the bar early on, West Brom laboured against a City side that stroked the ball around in midfield and threatened through a fluid front three of Arnautovic, Jonathan Walters and vilified Baggies old boy Peter Odemwingie.
Walters twice threatened - once with an angled shot, then with an off-target header when he should have done better - before Stoke took the lead.
After Steven Nzonzi surged through the heart of the home defence, Arnautovic was fed to cross into the box, where McAuley could only run the ball in at the near post past the wrong-footed Ben Foster.
Albion were restricted to ineffective counter-attacks but improved before half-time, showed greater intent after the break and were rewarded with an equaliser.
With Craig Dawson getting forward down the right, the ball was cut back to Sessegnon, who steered it back past Thomas Sorensen, playing in place of the injured Asmir Begovic.
Both teams had chances - Arnautovic and West Brom's Youssouf Mulumbu hit the woodwork - but it looked like the game was destined to end level.
That was to discount Adam. The substitute ran unchallenged at the West Brom defence and fired in low from the edge of the area to give Stoke a fifth successive win at The Hawthorns.
West Brom manager Pepe Mel on whether he wants to be in charge next season: "Yes - but only in the knowledge that we have lots of possibilities to compete.
"I am going to listen to the chairman to find out what he wants for the future. Ten players are out of contract and we will need eight or nine players to come in.
"West Brom still have time to decide whether or not they want next season to be one as full of as many problems as this one."
Stoke boss Mark Hughes: "We talked at length at the beginning of the season about what we wanted to achieve.
"Maybe some players thought we were being unrealistic because it was a big ask and at times at the start of the season it was a bit of a struggle.
"But in the second half of the season we've been fantastic in terms of understanding what was required. To get 50 points on the board in the hardest league in world football is a huge achievement for a club such as Stoke."
- 25DawsonSubstituted forO'Neilat 83'minutes
- 18AmalfitanoSubstituted forAnichebeat 63'minutes
- 21MulumbuSubstituted forVydraat 90'minutes
- 10ArnautovicSubstituted forEtheringtonat 90'minutes
- 9OdemwingieSubstituted forCrouchat 77'minutes
- 19WaltersSubstituted forAdamat 81'minutes
- Lee Probert
- Shots on Target
Second Half ends, West Bromwich Albion 1, Stoke City 2.
Substitution, Stoke City. Matthew Etherington replaces Marko Arnautovic.
Substitution, West Bromwich Albion. Matej Vydra replaces Youssuf Mulumbu.
Corner, West Bromwich Albion. Conceded by Marc Muniesa.
Goal! West Bromwich Albion 1, Stoke City 2. Charlie Adam (Stoke City) left footed shot from outside the box to the bottom right corner. Assisted by Glenn Whelan.
Attempt missed. Victor Anichebe (West Bromwich Albion) left footed shot from outside the box is too high. Assisted by James Morrison.
Offside, Stoke City. Stephen Ireland tries a through ball, but Peter Crouch is caught offside.
Substitution, West Bromwich Albion. Liam O'Neil replaces Craig Dawson because of an injury.
Corner, Stoke City. Conceded by Saido Berahino.
Substitution, Stoke City. Charlie Adam replaces Jonathan Walters.
Substitution, Stoke City. Peter Crouch replaces Peter Odemwingie.
Corner, West Bromwich Albion. Conceded by Glenn Whelan.
Corner, West Bromwich Albion. Conceded by Marc Wilson.
Foul by Stephen Ireland (Stoke City).
James Morrison (West Bromwich Albion) wins a free kick in the defensive half.
Foul by Geoff Cameron (Stoke City).
Graham Dorrans (West Bromwich Albion) wins a free kick in the attacking half.
Attempt missed. Peter Odemwingie (Stoke City) right footed shot from outside the box is close, but misses to the left. Assisted by Steven N'Zonzi.
Offside, Stoke City. Stephen Ireland tries a through ball, but Peter Odemwingie is caught offside.