West Ham moved to within two points of the Premier League's top four as Jesse Lingard and Craig Dawson secured a comfortable 2-0 win over a wasteful Leeds side.
After a shaky start from David Moyes' team, Lingard opened the scoring after he was brought down clumsily by Luke Ayling in the area. Ilan Meslier saved his resulting spot-kick, but he was on hand to convert the rebound.
Leeds seemed to crumble after the opener and were two down seven minutes later. Some really weak defending from a set piece allowed Aaron Cresswell to pick out Dawson in the area, and the big centre-back headed in his fourth of the season.
Marcelo Bielsa's team rallied in the second half but just couldn't get the ball over the line. Patrick Bamford was lively but couldn't hit the target, and when Raphinha was denied by a dramatic goal-line clearance from Dawson late on, Leeds seemed to concede that it just wasn't their day.
Let's get into some player ratings!
1. Goalkeeper & Defenders
Lukasz Fabianski (GK) - 6/10 - Quieter day at the office than he would have expected against Leeds, though was called into action once or twice.
Vladimir Coufal (RB) - 6/10 - No frills and no fuss. Typically solid and consistent performance from the Czech right-back.
Craig Dawson (CB) - 7/10 - Likes a goal these days, doesn't he? Clinical header at the back stick and popped up with a vital clearance off the line late on.
Issa Diop (CB) - 7/10 - Had to be on his toes to deny Rodrigo with an important block. Solid display, clearing virtually everything that came towards him.
Aaron Cresswell (LB) - 7/10 - Set-piece assist which is becoming the standard for the West Ham let-back. The coach to the Euros is calling...
Tomas Soucek (CM) - 6/10 - Not quite at his imposing best but covered plenty of ground in a functional performance.
Declan Rice (CM) - 8/10 - Virtually flawless on the ball and an important presence off it. Won the ball back more than any other player.
Jesse Lingard (AM) - 7/10 - Won the penalty, missed a penalty, scored the rebound. Two out of three ain't bad.
Pablo Fornals (RW) - 6/10 - Not in the game as much as Lingard or Benrahma due to a strangely deep starting position, but came within a couple of inches of goal of the season with an audacious half volley from distance.
Michail Antonio (CF) - 6/10 - Led the line well and covered the yards without really hitting his stride.
Said Benrahma (LW) - 7/10 - Frequently swapped positions with Lingard and made himself a real pain to mark with his darting, inverted runs. Had a few shots but wasn't clinical.
Jarrod Bowen (Benrahma, 77) - 5/10
Ben Johnson (Lingard, 89) - N/A
5. Goalkeeper & Defenders
Ilan Meslier (GK) - 7/10 - Couple of good stops. Steady in his distribution and really unlucky to see a good penalty save undone on the rebound.
Luke Ayling (RB) - 5/10 - Clumsy for the penalty, otherwise industrious but too loose on the ball for the demanding Bielsa's liking.
Diego Llorente (CB) - 6/10 - Fairly sharp and aggressive but a little ropey in his positioning and decision-making at times.
Liam Cooper (CB) - 6/10 - Did a decent job of holding things together but caught napping for West Ham's second.
Stuart Dallas (LB) - 6/10 - Saw loads of the ball and sprayed it about fairly well without creating too much down the left.
Kalvin Phillips (DM) - 6/10 - Slack and off the pace by his standards but probably still Leeds' best midfielder.
Mateusz Klich (CM) - 5/10 - Without doing too much wrong he was pretty anonymous before being withdrawn at the break.
Tyler Roberts (CM) - 5/10 - In to provide some attacking verve to the midfield but was pretty ineffectual.
Helder Costa (RW) - 4/10 - Hardly in the game before being sacrificed at half-time for Jack Harrison.
Patrick Bamford (CF) - 5/10 - Thought he had a glorious assist early on but the offside flag spoiled the party. Spurned a couple of really good chances in the second half.
Raphinha (LW) - 6/10 - Not at his best but still asked a few questions with his inventive attacking play.
Ezgjan Alioski (Klich, 45) - 5/10
Jack Harrison (Costa, 45) - 6/10
Rodrigo (Roberts, 60) - 5/10