Raul Jimenez's superb second half strike fired Wolves into the Premier League's top six, with a 1-0 win at Molineux also ending West Ham's unbeaten away record.
Jimenez was exceptional all afternoon and bagged the only goal of the game just before the hour mark, sweeping home from the edge of the area past Lukasz Fabianski having squandered a far better chance in the first period.
The defeat will disappoint West Ham manager David Moyes, but in truth his side were second best throughout the game and can have little complaints about the scoreline - one them sees them remain in third place.
In what was a pretty quiet first 45 minutes, the Hammers actually had the best of the opening exchanges - stretching Wolves' backline and looking menacing on the counter. But the intelligent movement of the Hammers' front four only yielded a headed opportunity for Jarrod Bowen, and he really should have tested Jose Sa from 12 yards out instead of planting it wide.
Wolves grew into the game and quickly began to dominate possession. Jimenez was looking lively up front, Podence's movement was starting to cause problems, and Ruben Neves - alongside Joao Moutinho - was able to pass around West Ham in an outnumbered midfield.
Jimenez should have given Wolves the lead when he was sent through one-on-one with Lukasz Fabianski but the Mexican fluffed his lines when attempting to dink the ball over the Polish goalkeeper, allowing Craig Dawson to hook his effort, which was drifting wide, away.
The second half saw Wolves take full control of the game, with a smart double save from Fabianski - both from Podence - keeping the visitors in the game. But there was nothing he could do to stop Jimenez's clinical finish just before the hour; the 30-year-old firing home first time from the edge of the area from Podence's square pass.
West Ham tried to get themselves back into the game, but in truth Moyes' changes had very little effect on the game - leaving Bruno Lage's side worthy winners.
Here's your player ratings from Molineux...
Wolves player ratings
1. Goalkeeper & defenders
Jose Sa (GK) - 6/10 - Didn't have a great deal do in terms of shot-stopping, but showed tremendous distribution with a defence splitting ball through to Podence.
Max Kilman (CB) - 6/10 - Spun a couple of times by Antonio as West Ham applied early pressure. Settled into the game and was largely untroubled.
Conor Coady (CB) - 7/10 - Organised the shape of the team well, ensuring pockets of space in the hole were quickly closed down.
Romain Saiss (CB) - 7/10 - Flicked a half chance wide from a first half corner, while his defensive contribution kept Bowen quiet.
2. Wing-backs & midfielders
Nelson Semedo (RWB) - 7/10 - Offers so much more going forward than he does defensively, though his end product could have been better.
Ruben Neves (CM) - 7/10 - Typically industrious in midfield, helping Wolves maintain the lion's share of possession.
Joao Moutinho (CM) - 6/10 - Hides the fact that he's 35 years old and not particularly mobile so well. Complements Neves nicely.
Rayan Ait-Nouri (LWB) - 6/10 - Pretty quiet on the left flank as most of Wolves' good work came on the opposite flank.
Daniel Podence (RF) - 8/10 - Showed moments of real quality throughout, testing Fabianski to the max a couple of times with efforts on goal.
Raul Jimenez (ST) - 8/10 - Missed a real sitter in the first half when he tried to get too cute with his finish, but the timing of his runs are superb. Great strike from the edge of the box.
Hwang Hee-chan (LF) - 6/10 - Looked up for the challenge of taking on Ben Johnson but never ever got the better of his young adversary.
Adama Traore ('76) - 6/10 - A late impact sub but not able to impact proceedings much.
Leander Dendoncker (87') - N/A
West Ham player ratings
5. Goalkeeper & defenders
Lukasz Fabianski (GK) - 7/10 - Made a couple of really smart saves from Podence early in the second half but could do nothing with Jimenez's superb strike.
Ben Johnson (RB) - 6/10 - Another error-free display from Johnson but he wasn't able to affect the game in an attacking sense.
Kurt Zouma (CB) - 5/10 - Not his usual rock solid self at the back. Troubled by Jimenez's runs and Podence's creativity.
Craig Dawson (CB) - 5/10 - Does have a tendency to commit himself to the tackle and was left floundering by smart movement.
Aaron Cresswell (LB) - 6/10 - Made a brilliant block from Semedo in the first half, again showing his defensive positional improvement.
Declan Rice (CM) - 7/10 - Another energetic display from West Ham's skipper, relentlessly pressing Wolves and nicking the ball away when needed. Unlucky to be on the losing side.
Tomas Soucek (CM) - 5/10 - Quiet alongside Rice in midfield. Unable to impose himself in Wolves' area and didn't cover enough ground.
Said Benrahma (AM) - 5/10 - Buzzed around in a free role but gave possession away too cheaply on a number of occasions. Subbed with West Ham needing fresh impetus.
Jarrod Bowen (RF) - 5/10 - Planted a header wide when he probably shouldn't have done better. Struggled to get into the game.
Michail Antonio (ST) - 5/10 - One of those frustrating afternoons that you sometimes get with Antonio. Ran the channels well and looked a real nuisance, but also made the easy look ridiculously hard.
Pablo Fornals (LF) - 5/10 - Interchanged positions nicely in the first 15 but faded as West Ham struggled to get hold of the ball. Hooked quickly after going behind.
Manuel Lanzini (60') - 5/10 - Given half an hour to change the game, and, well, didn't. Flat from a player who must impress more to get a chance.
Andriy Yarmolenko (71') - 6/10 - On for Bowen for the final 20. Did okay.
Nikola Vlasic (71') - 6/10 - West Ham's overall flatness reflected on Vlasic, who is still finding his feet.