Stoke maintained their unbeaten start to the season as Ryan Shotton poached a goal in the last minute to consign West Brom to their third straight defeat.
Shotton pipped Ben Foster to the ball to tap home with the West Brom keeper claiming he had both hands on it.
Shane Long had the Baggies best chance of the game but saw his diving header expertly kept out by the impressive Asmir Begovic in the Stoke goal.
Jermaine Pennant also went close for Stoke, heading just wide.
The result was desperately harsh on West Brom who had been the better team throughout with Stoke managing just one effort on target in the entire game.
Hodgson questions Stoke winner
But despite their endeavour Roy Hodgson's side are still searching for their first points of the campaign and sit alongside Tottenham and Blackburn in the bottom three without a point.
West Brom started brightly and full of intent but found Stoke keeper Begovic in fine form.
Paul Scharner was the first man to test the big Bosnian with a header straight at Begovic, before an unmarked Chris Brunt then headed wide from Somen Tchoyi's cross and really should have done better.
A few moments later Stoke were again saved by Begovic.
Tchoyi was again the provider, this time marauding down the left wing, but Long's diving header from 10 yards was superbly kept out by Begovic's point-blank save.
Brunt then curled a free-kick wide of the post but as the half wore on the game lost its way, with Stoke missing their usual intensity.
The arrival of a first-half downpour did little to help the pace of the game or indeed the muted atmosphere inside the Hawthorns but Stoke did at least manage one decent effort with Pennant heading Matthew Etherington's cross just wide of the angle.
Kenywne Jones, who had been anonymous in the first half, was then lucky to escape punishment for a late stamp on Steven Reid while Glenn Whealan toe poked just wide from 18 yards.
Pulis looks to strengthen Stoke
Tchoyi, the most lively player on the pitch, turned his marker well on the edge of the area but curled his effort wide of Begovic's post.
Tchoyi then volleyed wide from just inside the box before being replaced by Marc-Antoine Fortune as the game looked to be heading for a draw.
But with only injury time left Shotton showed great persistence in chasing a long ball and with Foster about to collect the ball he pinched it from his grasp following a mix up with centre-back Gabriel Tamas before tapping into an empty net from close range to push Stoke up to ninth.
West Brom manager Roy Hodgson
"To lose like that is very galling especially having seen the replays. I thought we defended it very, very badly.
"Foster could have been brave and taken the stud in the chest.
"But unfortunately he decided to turn away from the stud and, as a result, we conceded a goal.
"I think the referee could have helped in the situation by giving the free-kick because the player has put his foot high and was leading with his studs.
"I saw it as a foul, the ref didn't. That is football."
Stoke City manager Tony Pulis
"If we got a decision go our way, then fine. During this season, we will have a lot go against us.
"It all evens itself up. If we got away with one, it is bad luck for Roy and good luck for us and Stoke.
"But I thought it was a goal. I don't think Ryan caught the 'keeper at all.
"To be honest, I didn't look at the linesman thinking it was going to be a free-kick."
Full Time The final whistle is blown by the referee.
The ball is sent over by Nicky Shorey, Steven Reid takes a shot. Blocked by Ryan Shawcross.
Unfair challenge on Steven Reid by Ryan Shotton results in a free kick. Ben Foster takes the free kick.
Youssouf Mulumbu has an effort at goal from outside the box which misses left.
Assist by Jonathan Walters.
88:58 Goal scored
Goal! - Ryan Shotton - West Brom 0 - 1 Stoke Ryan Shotton scores a goal from close in to the bottom right corner of the goal. West Brom 0-1 Stoke.
Outswinging corner taken by Graham Dorrans from the right by-line played to the near post, Effort on goal by Paul Scharner from just inside the penalty area goes over the target.
The ball is crossed by Steven Reid, clearance by Ryan Shawcross.
Marc-Antoine Fortune sends in a cross, Ryan Shawcross manages to make a clearance.
Danny Pugh takes a inswinging corner to the near post, save by Ben Foster.
Graham Dorrans takes a shot. Save by Asmir Begovic.
Jerome Thomas concedes a free kick for a foul on Glenn Whelan. Free kick taken by Ryan Shawcross.
Graham Dorrans takes the inswinging corner, clearance made by Kenwyne Jones.
Corner taken by Graham Dorrans from the left by-line to the near post, Jonathan Walters manages to make a clearance.
Youssouf Mulumbu takes a shot. Save by Asmir Begovic.
Short corner worked by Graham Dorrans.
Substitution Graham Dorrans on for James Morrison.
Substitution Marc-Antoine Fortune on for Somen Tchoyi.
Steven Reid delivers the ball, Somen Tchoyi produces a right-footed shot from the edge of the box and misses to the left of the target.
Asmir Begovic restarts play with the free kick.
Substitution Ryan Shotton joins the action as a substitute, replacing Jermaine Pennant.
Shane Long gives away a free kick for an unfair challenge on Andy Wilkinson.
Paul Scharner produces a cross, Andy Wilkinson manages to make a clearance.
The ball is crossed by Somen Tchoyi, save made by Asmir Begovic.
Unfair challenge on Jerome Thomas by Andy Wilkinson results in a free kick. The free kick is delivered right-footed by James Morrison from left channel, Kenwyne Jones makes a clearance.
The ball is sent over by Andy Wilkinson.
A cross is delivered by Jermaine Pennant, clearance by Jonas Olsson.
Jonathan Walters delivers the ball.
Substitution Matthew Etherington leaves the field to be replaced by Danny Pugh.
Substitution Jerome Thomas joins the action as a substitute, replacing Chris Brunt.
Effort on goal by Somen Tchoyi from outside the area goes harmlessly over the bar.
Paul Scharner takes a shot. Blocked by Ryan Shawcross.
Somen Tchoyi delivers the ball, Youssouf Mulumbu takes a shot. Blocked by Glenn Whelan.
Glenn Whelan fouled by Youssouf Mulumbu, the ref awards a free kick. Free kick taken by Dean Whitehead.
Shot from outside the area by Somen Tchoyi misses to the left of the target.
Robert Huth sends in a cross, Jonathan Walters challenges Ben Foster unfairly and gives away a free kick. Ben Foster takes the direct free kick.
Andy Wilkinson fouled by James Morrison, the ref awards a free kick. Free kick taken by Asmir Begovic.
Paul Scharner delivers the ball, Andy Wilkinson makes a clearance.
Glenn Whelan concedes a free kick for a foul on Paul Scharner. Jonas Olsson restarts play with the free kick.
Chris Brunt takes a outswinging corner.
The ball is delivered by Shane Long, Ryan Shawcross manages to make a clearance.
Somen Tchoyi is ruled offside. Ryan Shawcross restarts play with the free kick.
Foul by Glenn Whelan on Paul Scharner, free kick awarded. Gabriel Tamas restarts play with the free kick.
Glenn Whelan has an effort at goal from just inside the box that misses to the right of the goal.
Kenwyne Jones concedes a free kick for a foul on Steven Reid. Gabriel Tamas restarts play with the free kick.
Free kick awarded for a foul by Kenwyne Jones on Jonas Olsson. Indirect free kick taken by Ben Foster.
The referee starts the second half.
45:00 +2:26 Half time
Half Time The referee blows for half time.
Matthew Etherington produces a cross, Header from deep inside the penalty area by Jermaine Pennant goes harmlessly over the crossbar.
Chris Brunt delivers the ball.
The ball is swung over by Somen Tchoyi.
Unfair challenge on Jonas Olsson by Jonathan Walters results in a free kick. Jonas Olsson restarts play with the free kick.
Foul by Paul Scharner on Jonathan Walters, free kick awarded. The free kick is delivered left-footed by Matthew Etherington from left channel, clearance made by Youssouf Mulumbu.
Handball decision goes against Paul Scharner. Asmir Begovic takes the free kick.
The ball is delivered by Chris Brunt, save by Asmir Begovic.
Substitution Andy Wilkinson comes on in place of Marc Wilson.
Matthew Etherington delivers the ball, Nicky Shorey manages to make a clearance.
The official flags Somen Tchoyi offside. Jonathan Woodgate takes the direct free kick.
Unfair challenge on Ryan Shawcross by Shane Long results in a free kick. Asmir Begovic takes the free kick.
Free kick awarded for a foul by Marc Wilson on Somen Tchoyi. Direct strike on goal from the free kick comes in from Chris Brunt.
Unfair challenge on Jonathan Walters by Paul Scharner results in a free kick. The ball is sent over by Jermaine Pennant, Jonathan Walters has a header from deep inside the six-yard box and clears the crossbar.
A cross is delivered by James Morrison, clearance by Jonathan Woodgate.
Free kick awarded for an unfair challenge on Jonas Olsson by Matthew Etherington. Indirect free kick taken by Ben Foster.
Marc Wilson has an effort at goal from 35 yards.
Unfair challenge on Jonathan Walters by Jonas Olsson results in a free kick. Jermaine Pennant crosses the ball from the free kick right-footed from right channel, clearance made by Jonas Olsson.
Free kick awarded for a foul by Ryan Shawcross on Somen Tchoyi. Chris Brunt crosses the ball from the free kick left-footed from right wing.
Chris Brunt has an effort at goal from outside the penalty area which goes wide right of the goal.
Jonathan Walters takes a shot.
Youssouf Mulumbu takes a shot from just outside the penalty area clears the crossbar.
The ball is delivered by Nicky Shorey, Jonathan Woodgate makes a clearance.
Unfair challenge on Jermaine Pennant by Nicky Shorey results in a free kick. Jermaine Pennant takes the free kick.
The ball is sent over by Jonathan Walters, Steven Reid manages to make a clearance.
The assistant referee flags for offside against Somen Tchoyi. Asmir Begovic takes the free kick.
The ball is swung over by Somen Tchoyi, Shane Long takes a shot. Asmir Begovic makes a brilliant save.
Marc Wilson delivers the ball, Gabriel Tamas manages to make a clearance.
Shane Long is flagged offside by the assistant referee. Ryan Shawcross takes the free kick.
Shane Long fouled by Dean Whitehead, the ref awards a free kick. Chris Brunt delivers the ball, Paul Scharner takes a shot. Save by Asmir Begovic.
The ball is sent over by Marc Wilson, Kenwyne Jones takes a shot. Ben Foster makes a save.
Centre by Matthew Etherington, Gabriel Tamas manages to make a clearance.
Somen Tchoyi sends in a cross, Headed effort from inside the area by Chris Brunt misses to the left of the goal.
Shane Long is ruled offside. Free kick taken by Jonathan Woodgate.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.