Match ends, Stoke City 2, Swansea City 1.
Stoke City 2-1 Swansea City
Stoke boss Mark Hughes praised his side's "courage and character" after they came from behind to send Swansea City to the bottom of the Premier League and add more pressure on their manager Paul Clement.
Wilfried Bony's first top-flight goal for more than a year gave the visitors an early lead, but Xherdan Shaqiri and Mame Biram Diouf had the home side in front by the interval.
"It was the worst start we could have possibly made. It was a great strike from Wilf, you have to say," said Hughes. "It would have been very easy to feel sorry for ourselves.
"We had to show courage and character and clear our heads. We dusted ourselves down and set about trying to do something about the situation."
Stoke should have finished the game off but Diouf headed wide and Shaqiri shot over.
And the hosts needed a fine save from Jack Butland to ultimately seal the points - the England goalkeeper saving an attempted clearance from Ryan Shawcross.
They held on for their first win since 28 October - and a first victory at home since September - to move six points clear of the bottom three.
While victory brought relief for the Potters boss, Clement's problems continue - this was Swansea's 10th league defeat of the season.
However, Hughes said he would be without defender Bruno Martins Indi for "three to four weeks minimum" after the 25-year-old strained his groin and left the field on a stretcher in the 53rd minute.
Graft does the trick for Stoke
This was an old-fashioned kind of win for the Potters - one based on graft, perseverance and big men at either end.
Peter Crouch contributed to Diouf's winner with a trademark headed flick-on from Shawcross' long ball, before Butland ensured they kept the points with his outstanding late save.
But it was the energy of midfielder Joe Allen that inspired the hosts.
After they fell behind so early, the Welshman created the equaliser by pinching the ball from Leroy Fer.
And he never stopped. Allen covered 12.4 km - more than any Swansea player - and made more sprints (63) than any other player.
He won the ball back for his side eight times, and also made the most tackles (three) and interceptions (three) for the hosts.
Swansea lose their 'cup final'
Clement had described this game as a "cup final" - and afterwards he angrily conceded his side "deserve to be bottom".
For 35 minutes it seemed as though his pre-match attempt to focus the minds of his players on the magnitude of the fixture had worked.
Bony discovered how to score again, and the visitors looked bright, with Martin Olsson raiding effectively down the left and Tammy Abraham making some clever runs.
Breaking a seven-hour run without a goal appeared to have revived the visitors' belief - but two goals in four minutes by Stoke deflated them again.
"It's not just frustrating because of the result and performance today but the whole period we are in. We are bottom of the table and deserve to be bottom," said Clement.
"I can't say we are unlucky, we've just not been good enough.
"Today was typical of us. We got off to a great start and it looked encouraging. But then there was a big mistake for the first goal, and I'm also disappointed with the second goal - we were too deep.
"After that our performance showed our mental fragility at the moment. I'm very angry and disappointed with what we are showing.
"The fact we are playing West Brom at home next - another team who have difficulties - it's another huge game. We have got to make sure we don't get cut adrift."
Swansea had more possession in the second half (64.3%) and overall (56.2%) than Stoke, but could not capitalise.
At 2-1, Abraham worked his way into space and played a ball across Stoke's area that nobody in white attacked. Bony's only shot on target was his goal.
If they cannot find more cutting edge, Swansea will continue to lose games like this - when there is otherwise little between the teams.
Man of the match - Joe Allen (Stoke City)
Swansea's misery at Stoke goes on - the stats
- Stoke have scored in all seven of their home Premier League games against the Swans.
- Swansea bagged their first Premier League goal after 431 minutes thanks to Wilfried Bony.
- Xherdan Shaqiri has been directly involved in nine goals in his last 11 Premier League games (four goals, five assists) - his joint-best return in a PL season.
- Two of Shaqiri's last three PL goals have come inside the box, this after his previous six in a row had arrived from outside the area.
- Wilfried Bony has scored six goals in his five appearances in Premier League games between Stoke and Swansea - scoring twice for Stoke and four times for Swansea.
- In fact, that was Bony's first Premier League goal since a brace against Swansea in October 2016 - 397 days ago.
- The Ivory Coast striker's goal (on two minutes 19 seconds) was the earliest the Swans had scored in a Premier League game since August 2014, when Nathan Dyer struck against West Brom after one minute and 27 seconds.
Stoke travel to Tottenham on Saturday, 9 December (15:00 GMT) while Swansea host fellow strugglers West Bromwich Albion at the Liberty Stadium on the same day (15:00 GMT).
- 15Martins IndiSubstituted forWimmerat 53'minutesBooked at 81mins
- 24FletcherSubstituted forAfellayat 70'minutes
- 22ShaqiriBooked at 90mins
- 10Choupo-MotingSubstituted forSobhiat 70'minutes
- 5van der Hoorn
- 4Ki Sung-yueng
- 8FerSubstituted forRenato Sanchesat 85'minutes
- 17ClucasSubstituted forCarrollat 73'minutes
- 18J AyewSubstituted forMcBurnieat 73'minutes
- 35Renato Sanches
- Craig Pawson
- Shots on Target
Second Half ends, Stoke City 2, Swansea City 1.
Xherdan Shaqiri (Stoke City) is shown the yellow card.
Offside, Stoke City. Peter Crouch tries a through ball, but Xherdan Shaqiri is caught offside.
Offside, Stoke City. Peter Crouch tries a through ball, but Mame Biram Diouf is caught offside.
Corner, Stoke City. Conceded by Martin Olsson.
Foul by Renato Sanches (Swansea City).
Xherdan Shaqiri (Stoke City) wins a free kick in the defensive half.
Renato Sanches (Swansea City) wins a free kick on the right wing.
Foul by Erik Pieters (Stoke City).
Attempt blocked. Mike van der Hoorn (Swansea City) header from the centre of the box is blocked. Assisted by Tom Carroll.
Renato Sanches (Swansea City) wins a free kick in the attacking half.
Foul by Joe Allen (Stoke City).
Attempt missed. Xherdan Shaqiri (Stoke City) right footed shot from the centre of the box is too high. Assisted by Ramadan Sobhi.
Kyle Naughton (Swansea City) wins a free kick on the right wing.
Foul by Erik Pieters (Stoke City).
Dangerous play by Kyle Naughton (Swansea City).
Ramadan Sobhi (Stoke City) wins a free kick in the defensive half.
Substitution, Swansea City. Renato Sanches replaces Leroy Fer.
Corner, Stoke City. Conceded by Mike van der Hoorn.
Attempt blocked. Xherdan Shaqiri (Stoke City) left footed shot from outside the box is blocked. Assisted by Mame Biram Diouf with a headed pass.
Foul by Alfie Mawson (Swansea City).
Ryan Shawcross (Stoke City) wins a free kick in the defensive half.
Kevin Wimmer (Stoke City) is shown the yellow card for a bad foul.
Wilfried Bony (Swansea City) wins a free kick on the right wing.
Foul by Kevin Wimmer (Stoke City).
Corner, Swansea City. Conceded by Jack Butland.
Mike van der Hoorn (Swansea City) wins a free kick on the right wing.
Foul by Ramadan Sobhi (Stoke City).
Offside, Stoke City. Jack Butland tries a through ball, but Ramadan Sobhi is caught offside.
Foul by Wilfried Bony (Swansea City).
Kevin Wimmer (Stoke City) wins a free kick in the defensive half.
Substitution, Swansea City. Oliver McBurnie replaces Jordan Ayew.
Substitution, Swansea City. Tom Carroll replaces Sam Clucas.
Substitution, Stoke City. Ibrahim Afellay replaces Darren Fletcher.
Substitution, Stoke City. Ramadan Sobhi replaces Eric Maxim Choupo-Moting.
Attempt saved. Ki Sung-yueng (Swansea City) left footed shot from outside the box is saved in the bottom left corner. Assisted by Kyle Naughton.
Attempt missed. Mame Biram Diouf (Stoke City) header from the centre of the box is close, but misses to the left. Assisted by Xherdan Shaqiri with a cross.
Foul by Jordan Ayew (Swansea City).
Darren Fletcher (Stoke City) wins a free kick on the right wing.