Cristian Romero, back in the XI after a three-match ban, headed Spurs in front in the 11th minute but they failed to build on their lead and Jarrod Bowen equalised at the start of the second half.
James Ward-Prowse capitalised on a defensive mix-up to win it for the Hammers 15 minutes from time.
Here's how we rated the Spurs players...
Guglielmo Vicario 5
Powerless to prevent Bowen's emphatic finish and sold short by Udogie, although he might have gone with his feet to the Italian's weak pass.
Pedro Porro 7
A constant livewire going forward and his corner led to the opening goal for Romero. Might have got a second assist but Richarlison headed his fine cross wide.
Cristian Romero 7
Added an assured calm to the back four, and opened the scoring with a great header. Lost a tussle with Bowen in the build up the West Ham leveller.
Ben Davies 5
Unlucky for the equaliser when his block ricocheted off Romero and into Bowen's path and Ward-Prowse beat him to the ball for the winner.
Destiny Udogie 5
Enjoying an imposing game before his loose back pass cost Spurs the match.
Yves Bissouma 6
Looked more confident in the first half, blasting a shot over from a good position. Needed to be cuter as Spurs search for a breakthrough after the equaliser.
Pierre-Emile Hojbjerg 6
Twice went down comically in search of a penalty in the first half. Saw plenty of the ball but created relatively little.
Giovani Lo Celso 7
Stung Fabianski's palms as he went in search of a goal in a third consecutive game and nearly created a second when Kurt Zouma turned his cross off the frame of his own goal. Passed well but occasionally slows the game down.
Dejan Kulusevski 6
Worked tirelessly and got into some dangerous areas but ultimately could not find a way through West Ham.
Brennan Johnson 6
Final ball was mixed but took up some promising positions in the first half and tested got off shots at Fabianski. Less of a threat after the break.
Heung-min Son 5
Quiet by his high standards and appeared to be carrying a knock when he was replaced.
Richarlison (Hojbjerg 67') 5
Narrowly headed just wide moments after his introduction when he should have hit the target.
Oliver Skipp (Lo Celso 67') 6
Passed the ball crispy and quickly.
Bryan Gil (Bissouma 84') 5
Not enough time to make an impression in a late cameo.
Pape Sarr (Johnson 84') 5
Returned from a hamstring injury and should be in the frame to start against Newcastle.
Alejo Veliz (Son 88') N/A
A late appearance for the young striker after Son appeared to pick up a knock.
Not used: Forster, Emerson, Donley, Dorrington.