West Brom fight on after a dramatic 1-0 victory over Tottenham.
The Baggies had seemed to be heading for the Sky Bet Championship before Jake Livermore struck a stoppage-time winner against Champions League-chasing Spurs at The Hawthorns.
It was a third win under caretaker boss Darren Moore, which came when Livermore bundled the ball in to spark jubilant scenes from the home supporters.
The Baggies move off the bottom and above Stoke, now within two points of Swansea, who lost 1-0 at Bournemouth.
Southampton could climb out of the bottom three should they beat Everton in Saturday's late kick-off.
Bournemouth, meanwhile, secured another campaign in the top flight with their win over Swansea.
Ryan Fraser's deflected effort broke the deadlock after 37 minutes after a well-worked free-kick, which proved enough to move the Cherries mathematically clear of any danger.
West Ham took a big step towards safety with a 2-0 win at Leicester, which leaves them on 38 points with two matches left.
After Marko Arnautovic saw his drive hit the crossbar, the visitors took the lead after 33 minutes when the Austrian forward set up Joao Mario.
Irons captain Mark Noble added a fine second after 64 minutes with a 20-yard volley to seal a crucial victory and heap more pressure on Leicester manager Claude Puel.
Watford will be playing in the Premier League again next season after a 2-1 home win over Newcastle, which was a first victory in eight games.
The Hornets took an early lead when midfielder Roberto Pereyra slotted in after just two minutes.
Argentine winger Pereyra then turned provider after 27 minutes as his cross was headed in by Andre Gray at the back post.
Captain Troy Deeney missed the chance to make it 3-0 just before the break when his penalty was saved by Martin Dubravka.
Newcastle had already secured their own Premier League status following an impressive run of four straight wins from the last six games, and pulled a goal back after 55 minutes through Ayoze Perez.