Michail Antonio – back in the Hammers’ starting line-up after a two-game absence – gave the hosts the perfect start, poking home after Hugo Lloris had failed to deal with Jarrod Bowen’s cross.
Jesse Lingard’s third goal in four league games was initially disallowed for offside against Pablo Fornals.
But VAR ruled that the Spaniard was not interfering with play when the former Manchester United man skipped through the visiting defence before powerfully finding the far corner to make it 2-0.
Half-time substitute Gareth Bale, who registered a goal and an assist in Tottenham’s Europa League win at Wolfsberger on Thursday, set up Lucas Moura to give Spurs hope, before hitting the top of the crossbar with a fierce strike 10 minutes later.
Son Heung-min also struck the woodwork in stoppage time.
The win – David Moyes’ first over Jose Mourinho in 16 attempts – lifts West Ham two points clear of Chelsea in fifth, while Spurs remain in ninth.
Moyes recently admitted to feeling “uneasy” when discussing the Hammers’ place near the top of the table, but that is unlikely to die down following their seventh win in nine league matches.
West Ham looked much sharper from the off and deservedly took an early lead through Antonio, whose pace and physicality caused the Spurs defence all sorts of problems in the opening exchanges.
Moyes’ side limited Tottenham to just two shots on target before the break – both of which came in the final minutes of the half – and they made the perfect start to the second period when Lingard combined with Fornals before lashing beyond Lloris to continue his recent revival having swapped red for claret and blue.
However, the hosts had their backs to the wall for the rest of the game as Spurs increased the urgency, with Moura’s header from Bale’s cross setting up a nervy finish.
They rode their luck when Vladimir Coufal’s clearance struck Son before looping over Fabianski and onto the outside of the post, but few could begrudge Moyes’s team all three points.
West Ham face both Manchester clubs, Leeds and Arsenal in their next four league matches. If they can emerge from those fixtures relatively unscathed, it could set the platform for an exciting end to the campaign for Hammers fans.