Match ends, Wolverhampton Wanderers 2, West Ham United 0.
Wolves are on their best unbeaten run in the top flight since 1972 after seeing off West Ham with strikes from Leander Dendoncker and Patrick Cutrone at Molineux.
Nuno Espirito Santo's side are back up to fifth in the Premier League after the Hammers failed to reproduce the kind of display that helped them to a shock win against Chelsea.
It has been quite a turnaround for the Midlands side, who failed to record a win in their first six games but have now not lost any of their past 10, a run that began after their 5-2 home defeat by Chelsea on 14 September.
Spanish winger Adama Traore has played a key role over this period and was excellent again on Wednesday, but the goals came from Dendoncker and substitute Cutrone. The Belgian defender gave Wolves the lead when he poked in from Joao Moutinho's corner in the 23rd minute, before Cutrone found the corner with a low drive, two minutes after replacing Raul Jimenez.
West Ham's best chances fell the way of Pablo Fornals and Robert Snodgrass. Fornals forced a good save from Rui Patricio with a curling shot, before Snodgrass' heavy touch allowed the Portuguese keeper to snuff out the danger.
Traore terrific for Wolves
The Wolves supporters were singing Traore's name within the first 20 minutes of the match. Praised by manager Nuno for his performance in the side's 2-1 win against Bournemouth last month, he followed that with another excellent run-out against Sheffield United on Sunday.
On Wednesday, the former Barcelona player gave Aaron Cresswell and Fornals a workout right from the first whistle. The 23-year-old has always been lauded for his great pace, but his crossing has improved noticeably this campaign.
He provide two great balls from the right in the opening quarter, one of which needed a headed clearance from Fabian Balbuena to prevent Jimenez from nodding in.
Jimenez, with seven goals in the past nine Wolves games, also produced a bright display. His excellent surge and cross from the right would have resulted in Wolves' second had Jonny kept his composure with keeper David Martin to beat.
The former Benfica player also should have done better with his strike, from Traore's through-ball, which was beaten away by the Hammers keeper.
Wolves' two goals were very different. The first owed a lot to the Hammers' poor marking, as they allowed Dendoncker space to poke home Moutinho's dead ball.
And the second was a result of Jonny's superb lung-busting run which was followed by a pinpoint finish from Cutrone.
Haller disappoints for the Hammers
West Ham were poor. Striker Sebastien Haller, who joined the club for £45m in the summer and scored three goals in his three games, was once again anonymous having replaced Michail Antonio in attack.
His one and only effort was an angled dinked shot from eight yards that cleared Patricio's bar by a few feet.
Team-mate Fornals was far better in attack. His strike tested the agility of the Wolves keeper before he set up Snodgrass, whose awful second touch allowed Patricio to make a save.
The former Scotland international was injured in the incident when his stretched leg collided with the goalkeeper, and was substituted as a consequence.
Manuel Pellegrini's side have now only managed one win in their past nine league games.
Man of the match - Adama Traore (Wolves)
'We're always competing' - reaction
Wolves manager Nuno Espirito Santo, speaking to Match of the Day about their 10-match unbeaten league run: "I'm proud of the players and fans. Everybody was part of it. Everything we've achieved is common effort. It's the way we embrace our effort."
On success during an the intense schedule: "We're trying to create habits and routines we didn't have, but want to have on a daily basis. Every day we have to be committed. It's about the way players play, rest, recover, eat and sleep. They are fit and competing until the last minute.
"I'm proud - we've already played 28 games. We're always competing, always competing."
West Ham boss Manuel Pellegrini speaking to Match of the Day: "We wanted to go and win two games in a row. We didn't play a bad game, but they scored on a set-piece. We had an option to score through Snodgrass but didn't do it.
"I said before that when we didn't win games it was down to conceding at set-pieces. We never thought before this game we were going to win just because we beat Chelsea.
"We must now try to win our home game against Arsenal."
Wolves on a roll - stats
- Wolves have won three league matches in a row against West Ham for the first time.
- West Ham have now won just one of their last nine Premier League matches, conceding 18 goals across those games (D2 L6).
- Wolves have scored in each of their last 10 Premier League games at Molineux - their best period in the top flight since February 2004 (also 10 in a row).
- Wolves have lost just one of their last 15 home Premier League games (W8 D6 L1), a 5-2 defeat by Chelsea in September.
- Moutinho has assisted 12 goals in the Premier League - only Matt Jarvis has provided more assists for Wolves (13).
Wolves are at Brighton on Sunday (16:30 GMT) and West Ham host Arsenal on Monday (20:00 GMT).
- 11Rui Patrício
- 28João Moutinho
- 19Castro Otto
- 37TraoréSubstituted forBennettat 89'minutes
- 9JiménezSubstituted forCutroneat 84'minutes
- 18JotaBooked at 30minsSubstituted forNetoat 72'minutes
- 3CresswellBooked at 78mins
- 11SnodgrassSubstituted forYarmolenkoat 62'minutes
- 16NobleSubstituted forHollandat 71'minutes
- 41RiceBooked at 67mins
- 8Felipe Anderson
- 22HallerSubstituted forAjetiat 80'minutes
- 15C Sánchez
- Andre Marriner
- Shots on Target
Second Half ends, Wolverhampton Wanderers 2, West Ham United 0.
Foul by Pedro Neto (Wolverhampton Wanderers).
Nathan Holland (West Ham United) wins a free kick on the left wing.
Attempt blocked. Andriy Yarmolenko (West Ham United) right footed shot from the right side of the box is blocked. Assisted by Felipe Anderson with a through ball.
Romain Saïss (Wolverhampton Wanderers) wins a free kick in the defensive half.
Foul by Albian Ajeti (West Ham United).
Substitution, Wolverhampton Wanderers. Ryan Bennett replaces Adama Traoré.
Pedro Neto (Wolverhampton Wanderers) wins a free kick in the defensive half.
Foul by Felipe Anderson (West Ham United).
Foul by Adama Traoré (Wolverhampton Wanderers).
Aaron Cresswell (West Ham United) wins a free kick in the defensive half.
Goal! Wolverhampton Wanderers 2, West Ham United 0. Patrick Cutrone (Wolverhampton Wanderers) right footed shot from the centre of the box to the bottom left corner. Assisted by Pedro Neto.
Offside, Wolverhampton Wanderers. Matt Doherty tries a through ball, but Patrick Cutrone is caught offside.
Substitution, Wolverhampton Wanderers. Patrick Cutrone replaces Raúl Jiménez.
Attempt missed. Aaron Cresswell (West Ham United) left footed shot from outside the box misses to the right. Assisted by Felipe Anderson.
Foul by Adama Traoré (Wolverhampton Wanderers).
Angelo Ogbonna (West Ham United) wins a free kick in the defensive half.
Substitution, West Ham United. Albian Ajeti replaces Sébastien Haller.
Attempt missed. Romain Saïss (Wolverhampton Wanderers) header from the centre of the box misses to the left. Assisted by João Moutinho with a cross following a set piece situation.