Michail Antonio's 90th-minute goal gave West Ham a 2-1 comeback victory over winless Leeds in a pulsating contest at Elland Road.
On his return from suspension, Antonio slotted home having been released by Declan Rice to keep Leeds without a victory this season after six games.
In a breathless game which had 35 shots on goal, Leeds went ahead through Raphinha's fine finish from the edge of the box (19), but with Illan Meslier making three excellent saves and Raphinha hitting the post again, a 3-3 half-time scoreline wouldn't have looked out of place.
- How the teams lined up | Match stats
- Premier League fixtures | Table
- Get Sky Sports | Live football on Sky Sports
Tomas Soucek saw his leveller disallowed after VAR spotted a foul by Antonio on Meslier in the build-up (53), but West Ham did get their equaliser as Jarrod Bowen's shot ricocheted off Firpo and into the net (67), before Antonio's late winner.
The result leaves West Ham seventh, while Leeds are yet to taste victory in their first six top-flight games for the first time since 1935/36, and sit 18th.
Leeds: Meslier (8), Firpo (6), Cooper (7), Cresswell (7), Dallas (6), Shackleton (6), Phillips (6), Klich (6), Raphinha (8), James (6), Rodrigo (6)
Subs: Harrison (6), Roberts (5), Summerville (NA)
West Ham: Fabianski (7), Coufal (7), Zouma (7), Ogbonna (7), Cresswell (6), Soucek (6), Rice (7), Benrahma (7), Fornals (6), Bowen (8), Antonio (7)
Subs: Vlasic (6), Dawson (NA), Yarmolenko (NA)
Man of the match: Jarrod Bowen
How West Ham grabbed win in thrilling contest
The first half was gloriously indisciplined as both sides created several chances, the first falling to Antonio, denied by a good Meslier block from an angle.
Meslier then tipped wide Said Benrahma's stroked effort, and as Leeds looked to play on the break, Stuart Dallas then produced an excellent stop from Lukasz Fabianski, touching over his long-range effort.
Leeds' strength on the counter brought the first goal as Dan James found Rodrigo on the left channel, with the hosts matching West Ham for numbers in the final third. Rodrigo pulled back for Mateusz Klich, who laid on Raphinha, and the Brazilian's first-time stroked shot found the bottom left corner past Fabianski.
Raphinha nearly scored again from the same square of grass, this time striking the foot of the post in the same corner as the ball fell kindly to him, before West Ham found rhythm in the final stages of the first half.
They should have levelled in injury time as Antonio played Pablo Fornals through on goal; his first and second touches were good, but the third took the ball slightly away from him, and Meslier did well to block his shot low down. Fornals almost had too much time to think.
Neither side calmed down in the second half with the game almost exclusively played in the final third. West Ham thought they'd levelled as Soucek tapped home after Meslier had spilled a looping ball, but VAR spotted an arm from Antonio on the goalkeeper as they challenged for the ball.
Meslier was a busy man all afternoon, tipping away Soucek's header from a corner, before moments later Klich passed the ball inches wide in space in the box from a Raphinha cut back at the other end.
West Ham exploited space down the right to equalise as Vladimir Coufal played in Bowen; he entered the boxed, lashed an effort left-footed at goal, the ball taking two deflections and beating Meslier. The final touch came off Leeds defender Firpo.
With Leeds looking more leggy in the final third as the game came to a close, West Ham looked to pounce for a winner. It nearly came five minutes from time as Antonio's swivel and shot was blocked by both Jamie Shackleton and Meslier, but his winner did come in the final minute.
On the right of midfield, Rice picked out Antonio centrally in space, and after a wonderful touch over the foot of Shackleton, Antonio composed himself and slotted bottom corner to send the travelling fans wild. Antonio told Sky Sports afterwards: "It was up there with one of my best goals."
Leeds made two changes from the draw at Newcastle as the injured Patrick Bamford and Luke Ayling came out for Jamie Shackleton and 19-year-old Charlie Cresswell, who made his first Premier League appearance for the club.
West Ham welcomed back Michail Antonio from suspension, meaning summer signing Nikola Vlasic moved to the bench.
Leeds' unapologetically risky style of play was evident again over a 90 minutes in which they both dominated and left gigantic gaps in the final third, none more so than in the final stages of a contest they perhaps should have shut out.
What the managers said:
Leeds boss Marcelo Bielsa: "We didn't play for the draw. It's a game where we did a lot not to deserve to lose. We came up against an opponent in a great moment. In the second half it was difficult to get the ball into the opposing half. We defended a lot, and too close to our own goal."
West Ham boss David Moyes: "Overall I think we deserved it, we made enough good chances to win the game. There were periods where I thought it wasn't going for Michail, but he gets the goals, he gets in. Thrilled for him because he does a great job for the team.
"The players are good. I'm really lucky I've got good players, good guys who are working so hard. They're enjoying the fact we don't feel as if we're going to be a relegation team, we feel as though we're going to be a team nearer the top of the league."
- West Ham have won each of their last three Premier League games when they've conceded the first goal (all away from home) - the first time they have won three consecutive such matches in the competition.
- Leeds' Raphinha has scored five goals from outside the box in the Premier League, the joint-most of any player since he made his debut in the competition in October 2020, tied with Son Heung-min.
- Charlie Cresswell (19y & 39d) became the first teenager to appear in a Premier League game for Leeds since James Milner (18y & 132d) and Scott Carson (18y & 255d) against Chelsea in May 2004.
Leeds now host Watford in the Premier League on Saturday October 2 at 3pm, while West Ham host Rapid Vienna on Thursday at 8pm in the Europa League before welcoming Brentford in the Premier League at 2pm on Sunday.