Daniel Podence scored the only goal with a fine, driven shot from 18 yards in the second half, and the Hammers had no answer despite a late rally.
Wolves jumped three spots up to 16th on 17 points after 19 games, while West Ham slipped one spot to 18th on 15 points, one point adrift of the safety zone.
After an intense first half, Wolves scored from a counter-attack from a West Ham corner in the 48th minute as Ruben Neves’ ball deflected off of Aaron Creswell and fell to Podence, who fired home with a first-time effort, low into the bottom corner. It was Podence’s fifth goal of the season and only Wolves’ 12th league goal this season.
Neves could have made it 2-0 in the 75th minute but his long-range strike hammered against the bar and on the follow-up, Rayan Ait-Nouri hit the ball against the post. Raul Jimenez thought he had a stoppage-time goal but it was flagged offside.
West Ham’s best chance came in the first half when Lucas Paqueta’s sublime cross from the left was flicked on by Tomas Soucek and an unmarked Vladimir Coufal at the back post struck it towards goal but Hugo Bueno blocked it.
Additional reporting by Reuters.