West Ham United continued their fine run of form as a second-half comeback at Tottenham, who dropped points from a winning position for a fifth consecutive game.
Cristian Romero's early header had given Spurs a deserved opener in the 11th minute as the defender nodded in Pedro Porro's corner with a looping effort.
But Jarrod Bowen hit back for the Hammers, latching on to a loose ball in the penalty area and firing in a 52nd-minute equaliser.
And, after a poor backpass from Spurs defender Destiny Udogie, James Ward-Prowse side-footed an effort against the post before knocking in the rebound to complete West Ham's turnaround in the 74th minute.
It means West Ham continued their purple patch, having won five of their past six fixtures across all competitions.
Tottenham meanwhile suffered their fourth defeat in five and have not won since October.
How did you rate Spurs' performance? Have your say hereWhat did you make of West Ham's display? Send us your views hereMore to follow.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Tottenham Hotspur
Squad number13Player nameVicario
Squad number23Player namePorro
Squad number17Player nameRomero
Squad number33Player nameDavies
Squad number38Player nameUdogie
Squad number8Player nameBissouma
Squad number5Player nameHøjbjerg
Squad number21Player nameKulusevski
Squad number18Player nameLo Celso
Squad number22Player nameJohnson
Squad number7Player nameSon Heung-min
Squad number4Player nameSkipp
Squad number9Player nameRicharlison
Squad number11Player nameGil
Squad number29Player nameSarr
Squad number36Player nameVéliz
West Ham United
Squad number1Player nameFabianski
Squad number5Player nameCoufal
Squad number4Player nameZouma
Squad number27Player nameAguerd
Squad number33Player nameEmerson
Squad number28Player nameSoucek
Squad number7Player nameWard-Prowse
Squad number19Player nameÁlvarez
Squad number20Player nameBowen
Squad number14Player nameKudus
Squad number10Player nameLucas Paquetá
Squad number8Player nameFornals
Line-ups
Tottenham
Formation 4-2-3-1
13Vicario23PorroBooked at 59mins17RomeroBooked at 89mins33Davies38Udogie8BissoumaSubstituted forGilat 84'minutes5HøjbjergSubstituted forRicharlisonat 67'minutes21KulusevskiBooked at 90mins18Lo CelsoSubstituted forSkippat 67'minutes22JohnsonSubstituted forSarrat 84'minutes7Son Heung-minSubstituted forVélizat 88'minutesSubstitutes
4Skipp9Richarlison11Gil12Emerson Royal20Forster29Sarr36Véliz63Donley65DorringtonWest Ham
Formation 4-3-3
1Fabianski5Coufal4Zouma27Aguerd33EmersonBooked at 57mins28Soucek7Ward-ProwseBooked at 80mins19ÁlvarezBooked at 90mins20Bowen14KudusSubstituted forFornalsat 88'minutes10Lucas PaquetáSubstitutes
3Cresswell8Fornals15Mavropanos18Ings21Ogbonna22Benrahma24Kehrer45Mubama49AnangReferee:Michael Salisbury
Live Text
Match ends, Tottenham Hotspur 1, West Ham United 2.
Second Half ends, Tottenham Hotspur 1, West Ham United 2.
Foul by Dejan Kulusevski (Tottenham Hotspur).
Lucas Paquetá (West Ham United) wins a free kick in the defensive half.
Attempt missed. Richarlison (Tottenham Hotspur) header from the centre of the box misses to the left. Assisted by Pedro Porro with a cross following a corner.
Corner, Tottenham Hotspur. Conceded by Kurt Zouma.
Attempt blocked. Pedro Porro (Tottenham Hotspur) right footed shot from outside the box is blocked.
Pedro Porro (Tottenham Hotspur) wins a free kick in the attacking half.
Foul by Jarrod Bowen (West Ham United).
Edson Álvarez (West Ham United) is shown the yellow card for a bad foul.
Attempt blocked. Pape Matar Sarr (Tottenham Hotspur) right footed shot from outside the box is blocked. Assisted by Bryan Gil.
Cristian Romero (Tottenham Hotspur) is shown the yellow card for a bad foul.
Foul by Cristian Romero (Tottenham Hotspur).
Jarrod Bowen (West Ham United) wins a free kick in the defensive half.
Substitution, West Ham United. Pablo Fornals replaces Mohammed Kudus.
Substitution, Tottenham Hotspur. Alejo Véliz replaces Son Heung-Min because of an injury.
Attempt missed. Pape Matar Sarr (Tottenham Hotspur) right footed shot from the centre of the box is high and wide to the right. Assisted by Son Heung-Min.
Offside, West Ham United. Jarrod Bowen is caught offside.
Attempt saved. Nayef Aguerd (West Ham United) header from very close range is saved in the top centre of the goal.
Corner, West Ham United. Conceded by Pape Matar Sarr.