Match ends, West Bromwich Albion 2, Stoke City 1.
Jonny Evans grabbed a stoppage-time winner for West Brom as Stoke suffered just their third defeat in 13 matches.
After a sterile first 60 minutes, Stephane Sessegnon fired the Baggies into the lead with a powerful shot.
Stoke created little in the second half but substitute Jonathan Walters headed them level from a superb Joselu cross.
Almost immediately, the visitors' Geoff Cameron was sent off for striking Claudio Yacob before Evans tapped home after a goalmouth scramble.
Stoke indiscipline costly again
Stoke had two men sent off within the first 30 minutes in the reverse fixture in August and needless indiscipline proved costly again at The Hawthorns.
The red card for Cameron, in reaction to a Yacob challenge, came much later in the game - the 82nd minute - but it followed within 60 seconds of substitute Walters heading an undeserved equaliser.
From being in a position where they could have stolen an unlikely three points, Mark Hughes' men were forced back on to the back foot.
The Baggies piled on the pressure, won a 93rd-minute corner and, after the ball pin-balled around the six-yard box, centre-half Evans tapped home his first goal for the club as Stoke appealed for offside in vain.
Pulis the man with Midas touch
Former Stoke boss Tony Pulis has now lost only once in 11 matches when managing in this fixture after West Brom won their second game in a row to move further away from the relegation zone.
The home team totally dominated the second half, having 11 shots to Stoke's three, and striker Rickie Lambert blew a great opportunity to put them 2-0 up when he miscontrolled after being put clean through.
Walters punished them almost immediately, but Evans, who along with captain Darren Fletcher performed superbly throughout, was in the right place as Stoke became the final team this season to concede in the Premier League from a corner.
Fletcher, who covered a match-high 11.03km, was key to the opening goal, winning possession and surging forward before finding James Morrison, who set up Sessegnon for his first league strike in over a year.
Pulis' men kept 17 league clean sheets in 2015 and, although they could not do so in their first match of 2016, they looked secure at the back for virtually the whole game and climb to 12th, just three points behind Stoke.
Stoke attacking spark goes missing
Stoke named an unchanged team for the third match in succession after wins over Manchester United and Everton but, having scored four at Goodison on Monday, offered little threat at The Hawthorns.
Bojan, Marko Arnautovic and Xherdan Shaqiri linked up brilliantly at Everton but Evans and Gareth McAuley virtually nullified them, with the Swiss managing one tame shot in the second half.
Walters' goal came from nowhere, created by a rare moment of quality from fellow substitute Joselu, but they are still only four points from fifth-placed Manchester United in 10th and in a good position to climb the table in the second half of the season.
Man of the match - Jonny Evans (West Brom)
Stoke boss Mark Hughes: "I don't think it was a high-quality game - we didn't play particularly well and I didn't think West Brom played particularly well.
"Geoff got caught late by the lad Yacob, he's just reacted to it and pushed the guy. We're not too happy with the reaction of the West Brom player. I think he went down really easily with the intention of maybe getting Geoff sent off, which he succeeded in doing.
"We'll look again tomorrow and we'll decide whether or not we appeal. At the moment, having seen it, that is probably what we will do."
West Brom boss Tony Pulis: "Stoke have been flying and are a real high-quality team and we are very pleased to win.
"The equaliser would have given them momentum but the lad being sent off means it goes back our way."
The stats you need to know
- Jonny Evans scored his first Premier League goal since Boxing Day 2012, when he scored for Manchester United against Newcastle
- Stephane Sessegnon scored his first league goal for the Baggies since netting against Manchester United in October 2014
- Jonathan Walters scored his first Premier League goal against West Brom since November 2010
- Walters scored Stoke's first headed goal since September in the Premier League
- No team has collected more red cards than Stoke City this campaign (four, level with West Ham)
West Brom host Bristol City in the third round of the FA Cup next Saturdaybefore a league trip to Chelsea on 13 January, while Stoke are at home to Liverpool in the first leg of their League Cup semi-final on Tuesday. After an FA Cup trip to Doncaster on 9 January, their next league game is home to Norwich on 13 January.
- 11BruntBooked at 90mins
- 5YacobSubstituted forBerahinoat 85'minutes
- 8GardnerSubstituted forMcManamanat 90+2'minutes
- 6WhelanSubstituted forWaltersat 68'minutes
- 20CameronBooked at 83mins
- 22ShaqiriSubstituted forAdamat 85'minutes
- 10ArnautovicBooked at 75mins
- 27BojanSubstituted forJoseluat 64'minutes
- 15Van Ginkel
- Lee Mason
- Shots on Target
Second Half ends, West Bromwich Albion 2, Stoke City 1.
Attempt missed. Charlie Adam (Stoke City) left footed shot from long range on the left is close, but misses to the left. Assisted by Erik Pieters.
Chris Brunt (West Bromwich Albion) is shown the yellow card.
Goal! West Bromwich Albion 2, Stoke City 1. Jonny Evans (West Bromwich Albion) right footed shot from very close range to the bottom right corner following a corner.
Attempt blocked. Craig Dawson (West Bromwich Albion) right footed shot from the centre of the box is blocked. Assisted by Callum McManaman with a cross.
Substitution, West Bromwich Albion. Callum McManaman replaces Craig Gardner.
Corner, West Bromwich Albion. Conceded by Erik Pieters.
Attempt blocked. Darren Fletcher (West Bromwich Albion) right footed shot from outside the box is blocked.
Attempt blocked. James Morrison (West Bromwich Albion) right footed shot from outside the box is blocked.
Attempt blocked. James Morrison (West Bromwich Albion) right footed shot from outside the box is blocked. Assisted by Craig Gardner.
Attempt saved. Craig Gardner (West Bromwich Albion) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Craig Dawson.
Attempt blocked. James Morrison (West Bromwich Albion) left footed shot from the left side of the box is blocked. Assisted by Saido Berahino.
Ibrahim Afellay (Stoke City) wins a free kick in the attacking half.
Foul by Craig Gardner (West Bromwich Albion).
Offside, West Bromwich Albion. Darren Fletcher tries a through ball, but Rickie Lambert is caught offside.
Corner, West Bromwich Albion. Conceded by Erik Pieters.
Substitution, West Bromwich Albion. Saido Berahino replaces Claudio Yacob.
Substitution, Stoke City. Charlie Adam replaces Xherdan Shaqiri.
Geoff Cameron (Stoke City) is shown the red card for violent conduct.