When Lingard doubled West Ham’s lead in the 47th minute with a goal initially disallowed for offside but awarded after a VAR check it looked like a comfortable win for David Moyes’ side.
But Lucas Moura’s header gave Tottenham a lifeline and they pressed hard for an equaliser with substitute Gareth Bale lashing a shot against the crossbar.
West Ham had another lucky escape in stoppage time as a Vladimir Coufal clearance deflected back off Son Heung-min and struck the post.
Tottenham had 19 goal attempts to the four of West Ham but were unable to prevent a fifth defeat in six league games.
Leicester too good for Villa
Villa suffered a blow before kickoff against Leicester when playmaker and captain Jack Grealish was ruled out with a leg injury, and Leicester were quick to exploit his absence.
With England manager Gareth Southgate watching from the stands, Maddison put Leicester into the lead in the 19th minute, picking up a pass from Barnes before curling a low, bouncing shot into the bottom corner.
Barnes made it 2-0 four minutes later, reacting quickest to lash a rebound from a Jamie Vardy shot high into the net.
“We knew they’d be up for it, so we knew we’d have to start fast. It was part of our game plan. We knew if we’d get shots in and around the box we’d have a chance,” Barnes told Sky Sports. “I’ve added goals to my game and I’m really happy with that. It’s down to confidence.”
Villa struck back three minutes into the second half as Matt Targett’s cross was helped on by John McGinn. Bertrand Traore was on hand to drill the ball into the net.
Maddison left the field with what looked to be a hip injury in the 64th minute, but Leicester continued to create chances. Vardy was unlucky not to score with a shot that flew across the face of the goal and wide.
Without Grealish, Villa had little to offer in attack as the visitors held on comfortably to win.