Michail Antonio and Jesse Lingard fired West Ham into the top four as the Hammers withstood a late Tottenham fightback to hang on for a 2-1 derby victory at the London Stadium.
West Ham were ahead inside five minutes thanks to the returning Antonio's fifth goal against Spurs, before loanee Lingard continued his fine form with the Hammers' second early in the second half.
It was the first time a Jose Mourinho side had conceded in the opening five minutes of both halves in a Premier League game and there was no way back for Spurs, as the frame of the West Ham goal thwarted a valiant late rally.
Lucas Moura headed in from a corner to give Spurs a lifeline before substitute Gareth Bale's stunning volley cannoned off the bar and Heung-Min Son's late effort deflected off the post as David Moyes secured his first victory against Mourinho in the Premier League at the 16th attempt.
The victory sees momentum continue to build behind West Ham's European charge, with the Hammers moving into fourth, nine points ahead of rivals Spurs, who stay ninth after losing five of their last six Premier League games.
West Ham: Fabianski (6), Coufal (7), Dawson (7), Diop (7), Cresswell (6), Rice (7), Soucek (7), Bowen (6), Fornals (6), Lingard (8), Antonio (8).
Subs: Benrahma (6), Noble (n/a), Johnson (n/a).
Tottenham: Lloris (5), Tanganga (5), Sanchez (6), Dier (6), Reguilon (6), Hojbjerg (5), Ndombele (5), Lamela (5), Moura (6), Son (5), Kane (6).
Subs: Doherty (5), Bale (7), Alli (n/a).
Man of the Match: Jesse Lingard.
- How the teams lined up | Match stats
- Premier League table | Results
- Get Sky Sports | Get a Sky Sports Pass
Hammers hold on for derby-day victory
After sitting out the previous two games, it took just five minutes before Antonio marked his return to the starting line-up with the opener.
Spurs' centre-backs failed to deal with Jarrod Bowen's brilliant in-swinging cross, which cannoned off goalkeeper Hugo Lloris into the path of Antonio, who fired the Hammers in front with his fifth goal against Tottenham.
Spurs were shellshocked in the face of West Ham's blistering start but managed to prevent the deficit from increasing, with last-ditch defending preventing Bowen, Lingard and Antonio from scoring a quick-fire second.
- Michail Antonio and Pablo Fornals returned as West Ham made two changes from the victory over Sheffield United.
- Sergio Reguilon replaced Ben Davies in Tottenham’s only change from the defeat at Manchester City.
Harry Kane whistled a shot wide on 13 minutes as Spurs gave West Ham a reminder of the threat they carried in attack, before the Hammers' early momentum was halted by the brief loss of midfielder Tomas Soucek to a nasty head injury.
The Czech was forced off for almost 10 minutes to receive stitches to a gash on the head he sustained while bravely preventing Davinson Sanchez from heading Spurs level, and West Ham didn't register another attempt until 38 minutes when Craig Dawson's header was tipped over by Lloris.
Erik Lamela registered Spurs' first attempt on target two minutes before the break, and Kane added a second was a fierce low drive in stoppage-time, but goalkeeper Lukasz Fabianski preserved the Hammers' lead with two fine saves.
Mourinho introduced Bale and Matt Doherty at the break in a bid to galvanise Spurs, but they were two down within two minutes of the restart.
Lingard combined with Fornals to burst into the Tottenham area before firing in his third goal since joining West Ham in emphatic style, and although the initial celebrations were curtailed by the offside flag, a VAR review found in favour of the Hammers.
Kane flashed a free-kick wide as Spurs peppered the West Ham goal in search of a route back, and they grabbed a lifeline on 64 minutes when Moura glanced Bale's corner in off the near post.
Kane came within inches of drawing level soon after when he flashed a shot wide of the far corner and Bale went even closer when his stunning volley cannoned back off the crossbar.
Spurs applied pressure right up to the final whistle but were denied by the woodwork again in stoppage-time as Son's block sent the ball looping against the post as the Hammers held on to the derby spoils.
Hammers dreaming of Europe - Match stats
- West Ham will spend a night within the top four places in a top-flight campaign after at least 25 matches have been played for the first time since 1985-86 when they finished the season in third.
- West Ham boss David Moyes has earned his first-ever win against Jose Mourinho in all competitions at the 16th attempt (previously P15 W0 D6 L9) - it was his most matches against a specific coach without ever winning.
- Tottenham have lost five of their last league games (W1), only picking up points in a 2-0 home victory against West Brom in this time. Their eight total league defeats this season are Jose Mourinho's most since 2015-16 with Chelsea when he was sacked after nine league defeats.
- Jose Mourinho has lost 15 of his first 50 league games in charge of Spurs, more than twice as many defeats as in first 50 league games in any other managerial stint with another side.
- West Ham's Michail Antonio has scored five Premier League goals against Tottenham, his best return against any single side in the competition.
- Jesse Lingard has scored three goals in four league games under David Moyes for West Ham, as many as he netted in his 36 total league appearances under Ole Gunnar Solskjaer at Man Utd.
What the managers said…
West Ham manager David Moyes: "A great win for us against a tough opponent. We are enjoying it but are also not going to be daft. We will keep calm about and hopefully keep pushing the teams at the top.
"There is always a first for everything and Jose Mourinho has had great teams. He is up there with elite managers but sometimes football can get you results like we did today.
"We have only done half a job. If we continue this way, we will be close. I don't want to be negative in any way. West Ham have always had bits where they've won some big games but what they want is consistency and I think we have consistency.
"This club badly needs a level where they are not around the bottom. This time last year you were asking me if we can avoid relegation, so it is a great feeling that is gone."
Tottenham boss Jose Mourinho: "I feel sad, obviously. I feel the result should have been a different one from what we played especially in the second half. That is my feeling and a little bit of deja vu. Their defensive line was brilliant. Their centre-backs gave us a very difficult match.
"We started the game with a mistake and started the second half with another one. The team in the second half was trying absolutely everything. We had the chances, hitting the post, great crosses across the face of goal. We had easy shooting positions to score so we should have scored more goals.
"They fought; this is not a criticism it is to praise their spirit. They fought, they fought hard, but they just fought. We were the team that tried to play but the boys were not lucky."
Man of the Match - Jesse Lingard
Jesse Lingard has scored three goals in four league games under David Moyes for West Ham, as many as he netted in his 36 total league appearances under Ole Gunnar Solskjaer at Man Utd.
West Ham travel to Premier League leaders Manchester City on Saturday at 12.30pm.
Live Renault Super Sunday
Spurs host Wolfsberger in the second leg of their Europa League round of 32 tie on Wednesday at 5pm, before hosting Burnley on Super Sunday at 2pm - live on Sky Sports Premier League.