Watford moved up to seventh in the Premier League as goals from Troy Deeney and Gerard Deulofeu secured a 2-0 win at West Ham.
Deeney gave the visitors the lead in the 30th minute, stepping up to score his third goal of the season from the spot after Fabian Balbuena had brought down Roberto Pereyra.
West Ham, who drop down to 12th, almost grabbed an equaliser early in the second half when Michail Antonio's header rebounded off the post and the forward had another golden opportunity in the 85th minute, heading against the crossbar from close range after Ben Foster had denied Robert Snodgrass.
The miss came back to haunt the Hammers as minutes later Deulofeu (87) struck to secure all three points for the visitors.
West Ham: Fabianski (8), Zabaleta (6), Balbuena (5), Diop (6), Masuaku (6), Rice (6), Noble (6), Snodgrass (7), Anderson (6), Chicharito (6), Antonio (6).
Subs: Ogbonna (6), Carroll (5), Diangana (6).
Watford: Foster (9), Femenia (7), Kabasele (6), Cathcart (7), Holebas (7), Doucoure (8), Capoue (7), Sema (7), Pereyra (8), Deulofeu (7), Deeney (7).
Subs: Cleverley (6), Success (n/a), Mariappa (n/a)
Man of the match: Ben Foster
The Hammers, who were looking to win five Premier League games in a row for the first time since February 2006, started brightly with Declan Rice and Michail Antonio forcing Ben Foster into early saves.
However, it was Watford who took the lead in the 30th minute, Deeney beating Fabianski from the spot after Balbuena had brought down Pereyra when the midfielder was through on goal.
The hosts went close to an equaliser before the break as Antonio headed Felipe Anderson's deep cross down towards Javier Hernandez. The Mexico international volleyed the ball towards the bottom corner but Foster dived to his left to push the ball to safety.
Moments after the break Antonio went even closer, glancing Robert Snodgrass's corner against the far post. Foster then denied Arthur Masuaku from distance before Hernandez totally missed his kick six yards out after being played in by Felipe Anderson.
West Ham boss Manuel Pellegrini stuck with the same side that won 2-0 at Fulham last Saturday.
Watford made one change from the side that beat Cardiff 3-2 last weekend. Etienne Capoue replaced Domingos Quina, who dropped down to the bench.
Abdoulaye Doucoure thought he had doubled Watford's lead after latching onto Pereyra's low cross, but Fabianski did brilliantly to tip the ball over the crossbar before also denied Deeney a second.
Manuel Pellegrini sent on Andy Carroll in a bid to grab a late equaliser but with West Ham piling forward, they left gaps at the back and Deulofeu punished then with a low finish across Fabianski to seal victory.
Christmas is for football
Get Sky Sports Premier League and Sky Sports Football for just £18 a month
Watford have won five of their last eight Premier League games against West Ham (D1 L2), winning three away from home in this run (1-0 in Feb 2007, 4-2 in Sept 2016 and 2-0 in Dec 2018).
West Ham lost just their second game in their last nine in the Premier League, having won each of the last four before today.
The Hammers have failed to keep a clean sheet in 10 of their last 11 Premier League home games.
Live Premier League
Deeney has scored in three of his last four league appearances against West Ham, with two of those goals coming at London Stadium.
Deulofeu scored in consecutive Premier League appearances for the first time in his career.
Watford ended a run of seven consecutive Premier League games in which they failed to keep a clean sheet.
Manuel Pellegrini: "Really I think we were a bit unlucky to not at least draw. The penalty was the only action in our box in the first half, and we had three or four chances to draw the game. Unfortunately, we didn't score and then they scored their second. We had to be faster and more accurate. In the second half they had a couple of chances but before that we had all the clear opportunities to draw."
Javi Gracia: "I try to keep my smile every day, not only when we win. But today I have a special reason because we have played very well. It was a very good performance here and we got another clean. To win against West Ham is always difficult but, in this situation, after four straight win, it was very special. It was good for us to get another clean sheet. It's something good for us. We worked on it through the week and we've got the reward
Man of the Match - Ben Foster
The Watford goalkeeper had to be in top form to keep his clean sheet intact. He made crucial saves at crucial moments in the game to help his side secure a second away win of the season.
He did brilliantly to scramble across to keep out Hernandez's volley to preserve his side's lead going into half-time and then late on he made a crucial save to keep out Snodgrass' deflected effort moments before Deulofeu secured all three points.
Watford's next game against Chelsea, which is at Vicarage Road on Boxing Day, is live on Sky Sports Premier League from 7.15pm.
Live Premier League
West Ham's next game is also live on Sky Sports Premier League. They travel to St Mary's to face Southampton on Thursday December 27 (7.30pm).