Santi Cazorla scored a goal and created another as Arsenal ended Manchester City’s 12-match unbeaten league run and damaged their title hopes.
Spain playmaker Cazorla converted a first-half penalty after Vincent Kompany fouled Nacho Monreal.
Arsenal added a second after the break when Cazorla’s free-kick picked out Olivier Giroud and the France striker headed in from close range.
The result left City five points behind Premier League leaders Chelsea.
City and Arsenal played out a thrilling 2-2 draw when they met at Emirates Stadium in September but this contest was not as free-flowing as that encounter.
Beforehand the focus had been the influence of Alexis Sanchez and Sergio Aguero for Arsenal and City respectively.
Aguero had only returned from a month out with a knee ligament injury as a substitute in City’s 1-1 draw with Everton a week ago, and the Argentina international was relatively subdued by his standards.
Chile forward Sanchez, who has scored 12 goals for Arsene Wenger’s side this season, was well shackled by the City defence.
Instead it was Cazorla, 30, who was the game’s outstanding attacking player and it was fitting that he was to have such an influential role with both goals.
The pressure was on City to beat the Gunners after leaders Chelsea beat Swansea 5-0 in such imperious fashion at the Liberty Stadium on Saturday.
But without Yaya Toure, who is at the Africa Cup of Nations with Ivory Coast, they lacked a player to orchestrate and dictate the game in midfield.
Arsenal went close when Alex Oxlade-Chamberlain escaped down the right flank and picked out Giroud but his header was deflected wide by Kompany.
The chance served notice of Arsenal’s intent to hit City on the counter-attack and shortly afterwards they won a penalty.
Monreal played a one-two with Giroud and the Spain left-back went down after his run was blocked by Kompany, who looked rusty in his first match since 13 December having recovered from a hamstring injury.
Cazorla sent the spot-kick low to Joe Hart’s left and even though the City goalkeeper dived the correct way he was unable to get a hand on it.
Arsenal packed men behind the ball in the remainder of the first half, which stifled City’s creativity with Aguero frequently outnumbered and rarely having the chance to run at players.
City manager Manuel Pellegrini replaced James Milner with Stevan Jovetic at half-time and his side had more impetus immediately after the interval with two up front.
An angled shot from Jesus Navas was beaten away by Arsenal goalkeeper David Ospina, and the Spain winger teased a cross into the box on the hour mark but Laurent Koscielny made a crucial interception.
Despite City’s pressure, it was Wenger’s side who scored next when Cazorla lifted a free-kick into the penalty area and Giroud escaped his marker and took advantage of a disorganised City defence to head past Hart.