Match ends, West Ham United 1, Tottenham Hotspur 0.
West Ham boss David Moyes says the club is "blossoming" after his side beat Tottenham to climb into the Champions League places.
Michail Antonio continued his prolific form as he poked in the winner from Aaron Cresswell's dipping corner for his sixth Premier League goal of the season.
Harry Kane earlier saw his back-post header tipped over the crossbar by Lukasz Fabianski, but Spurs failed to capitalise on several decent opportunities.
The win moves West Ham to fourth in the table on 17 points, making it Moyes' best start to a season since 2004-05 with Everton.
"We are growing characters at the moment," said Moyes, who returned to the club in December 2019, 19 months after his first spell ended.
"Over the last couple of years they have all blossomed, they are all feeling important and feeling like they can make a difference.
"The club is blossoming now and that comes from the players. Those players are all improving together and it is a good thing to have."
Tottenham sit two points behind their London rivals in sixth.
- Follow live text coverage of Sunday's Premier League action
- Go to the West Ham United page
- Go to the Tottenham Hotspur page
Moyes and Hammers flying high
Former Everton boss Moyes has struggled to leave his mark on a club since leaving Goodison Park for Manchester United in 2013 but the 58-year-old's West Ham side are now playing with all the traits that made the Scot one of the top-flight's most established coaches.
The last time one of his sides started a season as well as this was when he led Everton to a fourth-place finish in 04-05, and the Hammers have similar momentum after climbing into a Champions League spot with this win over their London rivals.
Moyes must also know he has a gem in Antonio, a forward who proves almost unplayable when on form and one who gave £47m centre-back Cristian Romero a ferocious physical battle on Sunday.
It was England captain Kane, however, who the 31-year-old got the better of from a corner to stab home Creswell's delivery and score his sixth goal in 10 league games against Spurs.
Tottenham had looked arguably the more likely to score in a game of few clear-cut chances, with Son Heung-min stretching the Hammers' defence and scuffing his shot when well placed after combining smartly with Tanguy Ndombele.
Kane's header then forced a great save from Fabianski and after the break Spurs got into dangerous positions only for their final ball to let them down, failing to engineer any sort of attempt on goal in the second half.
Boss Nuno Espirito Santo said he believed his side controlled the game, but the Hammers had chances of their own and Pablo Fornals twice forced Hugo Lloris into saves - firstly from an acrobatic volley early on and then with a deflected effort in the second half.
Nuno, like Moyes, may feel he is beginning to leave his mark on this Spurs side but there was no reward for the Portuguese manager for the decision to leave his starting XI at home in a defeat by Vitesse in the Europa Conference League on Thursday.
Spurs now look to get their Premier League campaign back on track against Manchester United next Saturday while West Ham will be eyeing a third successive league win when they visit Aston Villa on Sunday.
- 21OgbonnaBooked at 37mins
- 28SoucekBooked at 21mins
- 20BowenSubstituted forDawsonat 90+1'minutes
- 22BenrahmaSubstituted forLanziniat 85'minutes
- 12Leite de Souza Junior
- 4RomeroBooked at 60mins
- 3ReguilónSubstituted forGilat 84'minutes
- 27Lucas MouraSubstituted forBergwijnat 90+1'minutes
- 28NdombeleSubstituted forLo Celsoat 84'minutes
- 7Son Heung-Min
- 6D Sánchez
- 18Lo Celso
- Paul Tierney
- Shots on Target
Second Half ends, West Ham United 1, Tottenham Hotspur 0.
Substitution, West Ham United. Craig Dawson replaces Jarrod Bowen.
Substitution, Tottenham Hotspur. Steven Bergwijn replaces Lucas Moura.
Foul by Emerson Royal (Tottenham Hotspur).
Pablo Fornals (West Ham United) wins a free kick on the left wing.
Giovani Lo Celso (Tottenham Hotspur) wins a free kick in the defensive half.
Foul by Michail Antonio (West Ham United).
Substitution, West Ham United. Manuel Lanzini replaces Saïd Benrahma.
Substitution, Tottenham Hotspur. Giovani Lo Celso replaces Tanguy Ndombele.
Substitution, Tottenham Hotspur. Bryan Gil replaces Sergio Reguilón.
Corner, Tottenham Hotspur. Conceded by Ben Johnson.
Attempt saved. Saïd Benrahma (West Ham United) left footed shot from a difficult angle on the left is saved in the bottom left corner. Assisted by Michail Antonio with a through ball.
Emerson Royal (Tottenham Hotspur) wins a free kick in the defensive half.
Foul by Saïd Benrahma (West Ham United).
Goal! West Ham United 1, Tottenham Hotspur 0. Michail Antonio (West Ham United) right footed shot from very close range to the bottom left corner. Assisted by Aaron Cresswell with a cross following a corner.
Corner, West Ham United. Conceded by Hugo Lloris.
Attempt saved. Pablo Fornals (West Ham United) right footed shot from the right side of the box is saved in the top centre of the goal.
Pierre-Emile Højbjerg (Tottenham Hotspur) wins a free kick on the right wing.
Foul by Michail Antonio (West Ham United).
- Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment