Adama Traore climbed off the bench to send West Ham spinning to a fourth straight Premier League defeat.
The winger, a summer signing from Middlesbrough, struck in stoppage time to leave the Hammers – beaten 1-0 – without a point going into the international break.
For Wolves it was a first top-flight win since beating QPR in February 2012.
Yet the hosts did get off to a lively start with record signing Felipe Anderson’s shot saved by Rui Patricio at his near post.
Marko Arnautovic drove the rebound back across goal, from where a combination of Willy Boly and Patricio hacked the ball clear.
But Wolves, still buzzing from earning a point from Manchester City last weekend, quickly picked up on the palpable tension around the London Stadium and grew into the game.
Shots from Helder Costa, Joao Moutinho and Ruben Neves flew wide but Matt Doherty’s drive forced Lukasz Fabianski to tip the ball over the bar.
Wolves’ best chance of the first half arrived eight minutes before the interval when Moutinho wriggled clear down the right.
His cross was met by Costa, who had got in front of Ryan Fredericks only to plant his header just over the crossbar.
Raul Jimenez, who once saw a move to West Ham fall through, then fired narrowly wide.
For the Hammers, Robert Snodgrass hit the side-netting from Michail Antonio’s header, but it was a lacklustre first-half display from the hosts.
Snodgrass, perhaps unluckily, paid the price at half-time with summer signing Andriy Yarmolenko sent on in his place.
Arnautovic almost found a way through a packed penalty area after a neat flick from Jack Wilshere but could only prod the ball wide.
Wolves almost snatched the lead on the hour when Moutinho whipped in a free-kick but Jimenez headed too close to Fabianski.
They came even closer in the 74th minute when Jimenez cut the ball back to substitute Leo Bonatini, who was clean through 15 yards out but fired too close to Fabianski.
His cross flew straight to unmarked Jimenez, who got his feet in an awful tangle before taking an embarrassing swing and a miss in front of goal.
Arnautovic could have snatched the lead for West Ham moments later when he turned inside Conor Coady. The Austrian smashed his shot goalwards but it was kept out by the face of Patricio.
Then in stoppage time came the sucker punch, Carlos Sanchez losing the ball before Bonatini teed up Traore for the winner.