West Ham United continued their fine run of form with 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.
West Ham have won five of their past six fixtures across all competitions while Tottenham suffered their fourth defeat in five and have not tasted victory since October.
How did you rate Spurs' performance? Have your say hereWhat did you make of West Ham's display? Send us your views hereBowen epitomises tireless performance
West Ham are in a purple patch, but for much of the first half against their London rivals the Hammers barely had a touch as Tottenham seemed to dictate play at will.
Ghanaian Mohammed Kudus had a strike ruled out for offside and Lucas Paqueta sent a header narrowly wide as the visitors got a foothold just before the break.
Having absorbed Spurs' pressure West Ham were fortunate to level when Kudus' shot deflected off both Romero and Ben Davies and into the path of Bowen who dinked the ball over onrushing Spurs goalkeeper Guglielmo Vicario.
Twenty minutes later Bowen, again playing up front with regular number nine Michail Antonio recovering from a hamstring injury, forced Vicario to rush off his line to deal with Udogie's horror backpass.
The Italian pushed the ball straight to Ward-Prowse who duly netted West Ham's second after first striking the post.
West Ham were clinical when they needed to be with leading scorer Bowen epitomising his side's tireless performance.
They have won 10 points from losing positions in the Premier League this season - only Brighton & Hove Albion (11) and Liverpool (15) have recovered more.
And the visitors' latest win means they remain ninth in the table and host Fulham in their next league match on Sunday.
Spurs drop points from winning positions again
Just over a month ago, Tottenham beat Crystal Palace to go five points clear at the top of the Premier League table with their eighth league victory in 10 matches.
Five games without a win have followed, Spurs' longest winless run since November 2019.
Having taken an early lead, Ange Postecoglou's side were seemingly cruising and almost had a second just before the break when Giovani Lo Celso's dangerous cross was deflected on to the woodwork by returning West Ham captain Kurt Zouma.
And in the 70th minute, with the scores level at 1-1, substitute Richarlison should have headed Spurs back in front, but glanced a Porro cross wide from close range.
Defeat means Tottenham have lost 16 points from winning positions in the Premier League this season, more than any other side.
They stayed fifth in the table, three points off Manchester City in fourth and face seventh-placed Newcastle in their next match on Sunday.
Player of the match
BowenJarrod Bowen
with an average of 7.62
Tottenham Hotspur
Squad number17Player nameRomero
Squad number7Player nameSon Heung-min
Squad number23Player namePorro
Squad number13Player nameVicario
Squad number21Player nameKulusevski
Squad number18Player nameLo Celso
Squad number22Player nameJohnson
Squad number33Player nameDavies
Squad number38Player nameUdogie
Squad number8Player nameBissouma
Squad number5Player nameHøjbjerg
Squad number4Player nameSkipp
Squad number9Player nameRicharlison
Squad number36Player nameVéliz
Squad number29Player nameSarr
Squad number11Player nameGil
West Ham United
Squad number20Player nameBowen
Squad number7Player nameWard-Prowse
Squad number8Player nameFornals
Squad number14Player nameKudus
Squad number1Player nameFabianski
Squad number27Player nameAguerd
Squad number33Player nameEmerson
Squad number28Player nameSoucek
Squad number5Player nameCoufal
Squad number19Player nameÁlvarez
Squad number10Player nameLucas Paquetá
Squad number4Player nameZouma
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.
Dejan Kulusevski (Tottenham Hotspur) is shown the yellow card.
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.