Michail Antonio scored the only goal of the game in North London as the Hammers recorded their first away win of 2019, ending a run which had seen them lose eight of their last nine outings on the road.
Tottenham, meanwhile, suffer another blow to their top-four hopes as they remain just four points above fifth-placed Arsenal having now played a game more than their rivals in the race for Champions League qualification.
Spurs had won all four of their games at the new stadium without conceding, but it took West Ham only two minutes to threaten that unblemished record for the first time when Declan Rice thumped a well-struck effort narrowly over from 30 yards.
It set the tone for an even first half in which both sides created encouraging moments in the final third, although it was Spurs who carved out the best chances and the first fell to Son Heung-min, who could not squeeze a low shot past Lukasz Fabianski at the near post.
Ryan Fredericks drew the first save from Hugo Lloris at the other end with a low strike from range, and the Spurs skipper was called into action again moments later as Felipe Anderson darted down the left flank before firing into the arms of the keeper.
The West Ham keeper did come up with the goods when needed, though, and he was quick off his line to thwart Christian Eriksen from a tight angle after the ball had broken kindly for the Dane inside the area.
Juan Foyth then fired a long-range shot wide of the target, and the end-to-end nature of the half went all the way to the whistle as Lloris was forced into another save on the stroke of the interval, quickly changing direction to keep out Anderson's deflected low drive.
The Hammers once again came out brightly at the start of the second half and Marko Arnautovic in particular looked more dangerous, having made a game-low seven touches during an anonymous first-half display.
The Austrian teed up Fredericks two minutes after the restart as the full-back saw his goalbound effort blocked, and then drew a save from Lloris himself after bringing Fabianski's long pass down with a delightful touch.
Arnautovic was instrumental when West Ham took the lead in the 67th minute too, clipping an inch-perfect cross into the box for Antonio, who chested the ball down before lashing a volleyed finish past Lloris to take his place in history as the first visiting player to score at Tottenham's new stadium.
Spurs knew that victory could have been enough to secure a top-four spot with two games to spare should results have also gone their way on Sunday, but they offered little response to falling behind and it was West Ham who initially looked more likely to get the game's second goal.
Arnautovic did well to dig out a curling effort which Lloris needed to save, and Antonio almost struck again nine minutes from time after beating Ben Davies for pace and forcing the Spurs keeper into another smart stop at his near post.
Even Issa Diop almost got in on the action with a spectacular solo run which took him from deep inside his own half until he only had the keeper to beat, but after doing the hard work his finish was tired and Lloris was able to tip it behind for a corner.
The stretched nature of Tottenham's squad was highlighted by the fact that they finished with a strike partnership of Fernando Llorente and Vincent Janssen, although the latter almost made himself the unlikely hero when his last-gasp header was cleared off the line by Fabian Balbuena.
West Ham held on for only their second away league win over Spurs in the last 17 attempts, though, and their first in 21 against top-six sides.
Tottenham, meanwhile, fall to their first home defeat in 10 matches but remain in control of a top-four spot regardless of what happens when Arsenal, Manchester United and Chelsea all play on Sunday.
Mauricio Pochettino's side will now turn their attention to Tuesday's Champions League semi-final first leg with Ajax, whereas West Ham host Southampton next weekend.
TOTTENHAM (4-4-2): Lloris; Foyth, Sanchez, Alderweireld, Davies; Eriksen, Dier, Alli (Wanyama 85'), Rose (Janssen 77'); Son, Lucas (Llorente 66')
WEST HAM (4-1-4-1): Fabianski; Fredericks, Balbuena, Diop, Masuaku; Rice; Antonio, Noble (Ogbonna 85'), Snodgrass (Obiang 77'), Anderson; Arnautovic (Perez 80')
body check tags ::