An own goal from Kurt Zouma and a brace from Heung-min Son took Spurs past their London rivals, who scored one through Said Benrahma.
West Ham had little time to celebrate their historic win over Sevilla on Thursday with a tight comeback ahead of this derby.
David Moyes made just the two changes from their Europa League exploits, which saw them play in extra time and wreak havoc here in the second half.
Tottenham fans had booed and mocked every Zouma touch since kick-off, but had reason to greet one with a huge cheer when the Frenchman turned Harry Kane’s cross for the opener.
Arthur Masuaku had been caught on his heels trying to receive a smooth pass from Aaron Cresswell and allowed Matt Doherty to get ahead and grab possession, with the full-back playing Kane whose cross for Son deflected Lukasz Fabianski off Zouma’s knee.
West Ham responded quickly as Michail Antonio rolled Eric Dier and fired wide from the far post, but it was Spurs who were in control. Moyes’ change of form – a formation that had worked so well for them in the past – opened up huge spaces for Spurs.
The hosts tore through the east Londoners minutes after the opener as Dejan Kulusevski came forward and crossed for Son, who slammed the outside of the post.
With a back five in place, Declan Rice was playing more forward than in recent weeks, giving Kane space to play with the defensive line. The England captain easily edged Rice and turned into the space between the lines, able to power a fine through ball between Zouma and Craig Dawson for Son, who made no mistake this time passing Fabianski.
West Ham were playing into the hands of Tottenham and Moyes decided to rectify his mistake – carrying Rice during a break in play to make his adjustments.
It is perhaps an overstatement to say that those few words were key, but moments later West Ham were back. In a role reversal from the opener, Masuaku pressured Doherty and won a corner – one of West Ham’s most potent weapons.
Cresswell crossed for Dawson, whose header was wide but fell for Benrahma at the far post – the Algerian did well to readjust his feet sharply and score his first goal since December 28.
West Ham pulled off a remarkable 3-0 comeback here last season and haven’t given up on finding a leveler this time around. The Hammers, however, were leaving space behind and after Benrahma was cheaply dispossessed, it took a combination of Fabianski and Zouma to deny Kane a goal at the break.
The Hammers really should have leveled when Antonio launched an early effort over Hugo Lloris’ crossbar from Cresswell’s cross – his last move before being replaced by Andriy Yarmolenko.
The Ukraine international, who has scored twice in his last two, launched an effort from close range but West Ham were starting to slow down after all their effort on Thursday night.
This side don’t give up and keep pushing but Spurs find it easy to force them back and should have extended their lead when Pierre-Emile Hojbjerg clipped a ball for Kane, who dived over the bar, before Dawson blocks Matt Doherty. .
A third finally arrived by Son, who had troubled the visitors in the middle so much all along.
As West Ham continued to tire, Kane drew in the defenders by flicking a long ball from Lloris and played Son, left free to finish low past Fabianski.
Unlike Tottenham, West Ham have another potential route to the Champions League.
The Hammers have dropped to seventh and may have paid the price here for their midweek efforts, but few away today will care if their European dream continues beyond Lyon and a half -final.