However, Thilo Kehrer had a shocker at left-back at Elland Road.
Here’s how David Moyes’ side rated...
Lukasz Fabianski - 7
Didn’t have much chance with either goal but got away with one dropped cross. Tipped Rodrigo’s strike over bar and then made a stunning late save from same player’s header.
Vladimir Coufal - 7
Went close with effort from 50 yards after Illan Meslier’s poor clearance and was generally solid, with the Hammers’ weakness coming down the other flank. Hurt by a late one from Crysencio Summerville and replaced.
Craig Dawson - 5
Made few obvious errors but both Leeds goals came far too easily through the centre of defence and was caught out for late Rodrigo chance.
Nayef Aguerd - 6
Made a brilliant last-ditch tackle inside two minutes of his first Premier League start, but caught out a couple of times.
Thilo Kehrer - 3
Redeployed at left-back and had an absolute stinker, his tone set with a dreadful pass to put Rodrigo in early on.
Declan Rice - 5
One of the skipper’s poorer showings. Weak going to challenge Rodrigo for leveller.
Tomas Soucek - 6
Given a bit more attacking licence ahead of Rice but ineffective for large periods. Did provide physicality against a high-energy Leeds midfield, though. Made some vital clearances in Leeds’ late charge.
Jarrod Bowen - 6
Won the penalty by nipping in ahead of Robin Koch and his pace in behind caused the occasional problem.
Lucas Paqueta - 8
Took his penalty superbly for long overdue first West Ham goal. Had shown some nice touches and cute passes even before that.
Pablo Fornals - 6
Preferred to Said Benrahma and brought good energy, though let-off when missing a sitter before play was pulled back for the spot-kick.
Gianluca Scamacca - 7
Hardly had a kick in the first-half but put the Hammers ahead with a sensational effort off the inside of the post to end seven-game Premier League goal drought.
Michail Antonio (Scamacca 67’) - 6
Bizarre bit of play on own byline almost gifted Leeds a chance but made vital late block from Cooper.
Aaron Cresswell (Coufal 68’) - 6
Said Benrahma (Paqueta 80’) - N/A
Pablo Fornals (Downes 80’) - N/A
Unused: Areola, Johnson, Ogbonna, Lanzini