
West Ham stunned Arsenal to record a third successive Premier League victory, denting the Gunners' title challenge in the process.
It was a ruthless display by West Ham, who converted two of their three shots on target, while Arsenal squandered a host of opportunities as they missed the chance to move top of the league.
Tomas Soucek fired in Jarrod Bowen's cutback and, while the ball had potentially gone out of play in the build-up, there was not enough evidence for the video assistant referee to overturn the goal.
That gave West Ham a first-half lead which was doubled when former Arsenal centre-back Konstantinos Mavropanos expertly headed in a corner in the 55th minute.
Despite plenty of possession and pressure, Arsenal could not find a response.
And their woeful night was nearly made worse when Declan Rice gave away a penalty in the final minute of injury time, but Said Benrahma's effort was saved by David Raya.
The result leaves Mikel Arteta's Gunners second in the table, two points behind league leaders Liverpool, while West Ham end the year with 33 points - their highest total at the halfway stage in a Premier League campaign.
Missed opportunity for Gunners

Arsenal's undoing was their inability to convert dominance and possession into goals.
As the match wore on, their failure to capitalise only led to frustration - not only on the pitch but also in the stands, as fans grew weary and the atmosphere drained at Emirates Stadium.
Opportunities were spurned as Bukayo Saka struck the post in the first half, Gabriel Martinelli fired wide and Gabriel Jesus headed high.
Ex-West Ham captain Rice later fizzed an effort over the bar, before Hammers goalkeeper Alphonse Areola denied Leandro Trossard and Martin Odegaard.
It was a stark contrast to West Ham's fortunes and the visitors were able to brilliantly fend off countless attacks with selfless defending.
Arsenal's lack of ruthlessness could prove costly with five teams sitting within six points of each other at the top of the Premier League. There is little room for error.
Season's greetings for Hammers
West Ham's results in December have been a festive treat with Moyes' side backing up an impressive win over Manchester United with this stunning result at the Emirates.
It means they sit sixth in the table, well in the mix for European qualification, following four wins, one draw and one defeat in the league this month.
Despite losing England midfielder Rice in the summer, who lined up for Arsenal against his former club for the first time, West Ham have shown maturity and growth in the first part of the campaign and have been rewarded with their highest points tally.
But there will be an anxious wait to learn the extent of Lucas Paqueta's injury - the Brazilian midfielder had ice strapped to his left leg after being forced off in the 31st minute, having pulled up in the warm-up before being risked anyway.

Player of the match
ÁlvarezEdson Álvarez
with an average of 7.92
Arsenal
Squad number8Player nameØdegaardAverage rating4.53
Squad number41Player nameRiceAverage rating4.44
Squad number2Player nameSalibaAverage rating4.37
Squad number7Player nameSakaAverage rating4.36
Squad number10Player nameSmith RoweAverage rating4.30
Squad number6Player nameGabriel MagalhãesAverage rating4.12
Squad number4Player nameWhiteAverage rating3.95
Squad number9Player nameGabriel JesusAverage rating3.95
Squad number11Player nameGabriel MartinelliAverage rating3.90
Squad number19Player nameTrossardAverage rating3.88
Squad number22Player nameRayaAverage rating3.73
Squad number14Player nameNketiahAverage rating3.69
Squad number24Player nameNelsonAverage rating3.64
Squad number35Player nameZinchenkoAverage rating3.58
West Ham United
Squad number19Player nameÁlvarezAverage rating7.92
Squad number23Player nameAreolaAverage rating7.92
Squad number7Player nameWard-ProwseAverage rating7.92
Squad number14Player nameKudusAverage rating7.91
Squad number15Player nameMavropanosAverage rating7.91
Squad number21Player nameOgbonnaAverage rating7.90
Squad number28Player nameSoucekAverage rating7.90
Squad number33Player nameEmersonAverage rating7.86
Squad number20Player nameBowenAverage rating7.82
Squad number5Player nameCoufalAverage rating7.76
Squad number10Player nameLucas PaquetáAverage rating7.38
Squad number22Player nameBenrahmaAverage rating7.23
Line-ups
Arsenal
Formation 4-3-3
- 22Raya
- 4White
- 2Saliba
- 6Gabriel
- 35ZinchenkoSubstituted forNelsonat 64'minutesBooked at 72mins
- 8Ødegaard
- 41Rice
- 19TrossardSubstituted forSmith Roweat 79'minutes
- 7Saka
- 9Gabriel JesusBooked at 90mins
- 11MartinelliSubstituted forNketiahat 64'minutes
Substitutes
- 1Ramsdale
- 10Smith Rowe
- 14Nketiah
- 15Kiwior
- 17Cédric Soares
- 20Jorginho
- 24Nelson
- 25Elneny
- 63Nwaneri
West Ham
Formation 4-2-3-1
- 23Areola
- 5Coufal
- 15Mavropanos
- 21Ogbonna
- 33Emerson
- 19Álvarez
- 28Soucek
- 14Kudus
- 7Ward-Prowse
- 10Lucas PaquetáSubstituted forBenrahmaat 33'minutes
- 20Bowen
Substitutes
- 1Fabianski
- 2Johnson
- 3Cresswell
- 8Fornals
- 17Cornet
- 18Ings
- 22Benrahma
- 24Kehrer
- 45Mubama
- Referee:
- Michael Oliver
- Attendance:
- 60,261
Match Stats
Live Text
Match ends, Arsenal 0, West Ham United 2.
(Feed generated with FetchRSS)