Goals from Andriy Yarmolenko and Aaron Cresswell earned West Ham their second successive home win against Manchester United, who lost striker Marcus Rashford through injury in the second half.
Yarmolenko opened the scoring on the stroke of half-time, sending a low finish past David de Gea following patient build-up play involving Mark Noble and Felipe Anderson.
Cresswell sealed all three points for the Hammers in the second half with a superb free-kick into the top right-hand corner.
Chances were at a premium in a cagey first half at London Stadium, with Noble’s deflected effort from Pablo Fornals’ free-kick the closest either team came to a breakthrough before Yarmolenko’s strike.
Juan Mata should have levelled for the visitors two minutes into the second half but failed to hit the target after connecting well with Andreas Pereira’s low cross.
The result lifts West Ham above the Red Devils in the table, while Ole Gunnar Solskjaer’s side remain three points off the top four and without an away league win since February.
After making nine changes for the midweek Europa League victory over Astana, Solskjaer fielded the same team that beat Leicester at Old Trafford in their last league game.
Nemanja Matic and Rashford were the sole survivors from Thursday’s win, with teenage striker Mason Greenwood – United’s match-winner against the Kazakh side – unavailable due to tonsillitis.
Rashford, who had gone five matches without a goal in open play before today, looked short on confidence throughout, failing to register a single shot before going off injured just shy of the hour mark.
The injury capped a deeply frustrating afternoon for Solskjaer, whose side looked lacklustre, lethargic and short of ideas in the final third.
Matic’s long-range drive, which was easily held by Lukas Fabianski, was the closest they came to a goal in a forgettable first half.
The visitors improved marginally in the second and should have restored parity when Mata got on the end of Pereira’s delivery, but the veteran midfielder somehow managed to steer the ball wide from point-blank range.
Harry Maguire also went close to bringing the visitors level before West Ham’s second goal, firing straight at Fabianski after the Hammers had failed to clear a corner.
The defeat extends Manchester United’s poor away form – their last league victory on their travels came at Crystal Palace on 27 February.
Manuel Pellegrini’s side were bottom of the table after four matches this season, but Sunday’s result lifts them three points above Solskjaer’s side in the standings – a mark of their progress under the Chilean’s stewardship.
The Hammers have now kept four successive clean sheets in all competitions, while summer signing Sebastien Haller and fit-again Yarmolenko have shown considerable promise up front in recent weeks.
Yarmolenko was a constant menace, breaking the deadlock with a composed finish and registering more shots than anyone else on the pitch.
The Ukrainian nearly set up West Ham’s second midway through the second half, but Felipe Anderson – who endured a disappointing afternoon – fired straight at De Gea.
The game remained on a knife edge until the 84th minute, when Cresswell’s sublime free-kick – his first goal since April 2018 – sealed the points for the home side.
Pellegrini’s team could end the day in the top four, provided Arsenal and Chelsea drop points against Aston Villa and Liverpool respectively.