Arsenal moved to within two points of surprise Premier League leaders Leicester City with victory over Manchester City at Emirates Stadium.
The Gunners - without a title triumph since 2004 - showed the sort of impressive drive, cutting edge and resilience that will lead manager Arsene Wenger to believe Arsenal can finally end that barren spell.
City dominated early possession but Kevin de Bruyne wasted a good chance and Theo Walcott punished the visitors with a right-foot finish from 20 yards in the 33rd minute.
Eliaquim Mangala's dreadful clearance allowed Mesut Ozil's 15th assist of the season as he set up Olivier Giroud for an angled finish in first-half stoppage time. Yaya Toure's clever shot from outside the area set up a tense finale which saw both Toure and substitute Wilfried Bony waste chances to equalise.
Wenger's side have often been accused of having a soft centre when the pressure is on - but here, faced with the team many believe will still emerge as their closes title rivals, they showed a ruthless streak.
City may have dominated possession and territory for the first half hour but it was Arsenal who made it count at the business end. Their tally for the opening 45 minutes read two shots on target and two goals. For a manager who prides himself on efficiency, Wenger will have been delighted.
The Gunners were impressive at the back too, where goalkeeper Petr Cech was the epitome of safe handling and security, proving once more what a significant signing he has been.
Arsenal's defenders were in the mood too, with two crunching tackles from full-back Nacho Monreal drawing a high-five from fellow defender Per Mertesacker.
For a player often criticised for his lack of end product, Walcott looks to be evolving into the complete striker at the age of 26.
Walcott's goal, wonderfully accomplished as he turned inside before curling a perfect finish beyond the stretching City keeper Joe Hart, was his 13th in his last 17 league appearances and delivered further evidence of his development into a consistent and reliable goalscorer.
He, and indeed Arsenal, are receiving plenty of help from the Premier League's current creator supreme Ozil, who had a hand in both goals and received a standing ovation when he was replaced late on.
Add in Giroud's current golden sequence of 12 goals in his last 14 matches in all competitions, and Arsenal will believe they possess the potency to carry them all the way.
Aside from a dominant opening half and a late rally after Toure's goal, this was another poor performance from Manuel Pellegrini's side.
City were too often laboured and the sight of captain Vincent Kompany sitting in the stand watching on forlornly pointed to where many of the problems lie.
Pellegrini may have signed Mangala and Nicolas Otamendi for fees in excess of £60m, but they are still not the same and markedly less assured.
And with Sergio Aguero still not fully fit and substituted, City are currently well short of their best.
Arsenal manager Arsene Wenger: "I believe we have shown spirit, organisation, brilliance and altogether they gave us the three points.
"You could see that there is exceptional life in this team and when we did not have the legs anymore, we relied on spirit and that got us through in the end."
Manchester City manager Manuel Pellegrini: "In the second half we took some risks, we continued going for the game.
"We did better than Arsenal but we didn't win and that is all that matters. We didn't deserve to lose the game."
Former Manchester City defender Danny Mills: "City dominated possession but only had long shots as Arsenal played perfect counter-attacking football.
"Arsenal had really good chances to kill the game off and got nervous at the end but you have to say all credit to them. It was a terribly disappointing performance from City."
Arsenal travel to 12th-placed Southampton on Boxing Day before entertaining Bournemouth two days later. Manchester City play Sunderland at home next, before taking on current leaders Leicester away on 28 December.
Full Time Match ends, Arsenal 2, Manchester City 1.
90:00 +4:48 Full timeFull Time Second Half ends, Arsenal 2, Manchester City 1.
90:00 +1:51Foul by Yaya Touré (Manchester City).
90:00 +1:51Calum Chambers (Arsenal) wins a free kick in the defensive half.
90:00 +0:30Delay over. They are ready to continue.
89:55Delay in match Olivier Giroud (Arsenal) because of an injury.
89:10Attempt blocked. Fernandinho (Manchester City) right footed shot from outside the box is blocked.
88:50Corner, Manchester City. Conceded by Héctor Bellerín.
87:53 SubstitutionSubstitution Substitution, Arsenal. Calum Chambers replaces Theo Walcott.
86:48Attempt missed. Yaya Touré (Manchester City) left footed shot from the centre of the box is close, but misses to the left. Assisted by Kevin De Bruyne with a through ball.
85:42Attempt missed. Wilfried Bony (Manchester City) header from the centre of the box is too high. Assisted by Yaya Touré following a corner.
85:40Attempt missed. Yaya Touré (Manchester City) right footed shot from outside the box misses to the left. Assisted by Kevin De Bruyne following a corner.
85:17Corner, Manchester City. Conceded by Nacho Monreal.
83:09Corner, Manchester City. Conceded by Laurent Koscielny.
83:07Attempt blocked. Wilfried Bony (Manchester City) right footed shot from the centre of the box is blocked.
82:25Attempt missed. Aaron Ramsey (Arsenal) left footed shot from the left side of the box misses to the right. Assisted by Alex Oxlade-Chamberlain.
81:35 Goal scoredGoal! Goal! Arsenal 2, Manchester City 1. Yaya Touré (Manchester City) left footed shot from outside the box to the top left corner. Assisted by Bacary Sagna.
78:56Attempt saved. Theo Walcott (Arsenal) right footed shot from outside the box is saved in the centre of the goal. Assisted by Aaron Ramsey.
75:57 SubstitutionSubstitution Substitution, Arsenal. Alex Oxlade-Chamberlain replaces Mesut Özil.
74:17Attempt saved. Wilfried Bony (Manchester City) header from the centre of the box is saved in the top left corner. Assisted by Jesús Navas with a cross.
Corner, Manchester City. Conceded by Kieran Gibbs.
72:41Attempt saved. Raheem Sterling (Manchester City) right footed shot from outside the box is saved in the bottom left corner. Assisted by Kevin De Bruyne.
72:10 SubstitutionSubstitution Substitution, Manchester City. Jesús Navas replaces David Silva.
69:02 SubstitutionSubstitution Substitution, Arsenal. Kieran Gibbs replaces Joel Campbell.
68:35Attempt missed. Aaron Ramsey (Arsenal) right footed shot from the centre of the box is high and wide to the right. Assisted by Olivier Giroud.
67:18Attempt blocked. Aleksandar Kolarov (Manchester City) left footed shot from outside the box is blocked. Assisted by Joe Hart.
66:12Attempt missed. Wilfried Bony (Manchester City) header from the centre of the box misses to the left. Assisted by Yaya Touré with a cross.
65:05Foul by Bacary Sagna (Manchester City).
65:05Mesut Özil (Arsenal) wins a free kick in the defensive half.
62:41 SubstitutionSubstitution Substitution, Manchester City. Wilfried Bony replaces Sergio Agüero because of an injury.
61:09Delay over. They are ready to continue.
60:38Delay in match Sergio Agüero (Manchester City) because of an injury.
60:11Foul by Fernandinho (Manchester City).
60:11Joel Campbell (Arsenal) wins a free kick in the attacking half.
59:06Corner, Arsenal. Conceded by Bacary Sagna.
59:03Attempt saved. Aaron Ramsey (Arsenal) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Joel Campbell.
57:46Offside, Manchester City. Kevin De Bruyne tries a through ball, but Sergio Agüero is caught offside.
57:14Sergio Agüero (Manchester City) wins a free kick on the right wing.
57:14Foul by Laurent Koscielny (Arsenal).
55:57Corner, Arsenal. Conceded by Nicolás Otamendi.
55:40Foul by Fernandinho (Manchester City).
55:40Aaron Ramsey (Arsenal) wins a free kick on the right wing.
55:28Attempt saved. Joel Campbell (Arsenal) left footed shot from the right side of the box is saved in the centre of the goal. Assisted by Laurent Koscielny with a through ball.
54:38Attempt saved. Sergio Agüero (Manchester City) header from the centre of the box is saved in the centre of the goal. Assisted by Aleksandar Kolarov with a cross.
54:02David Silva (Manchester City) wins a free kick on the left wing.
54:02Foul by Aaron Ramsey (Arsenal).
53:42Hand ball by Raheem Sterling (Manchester City).
52:33Attempt missed. Joel Campbell (Arsenal) left footed shot from the centre of the box is too high. Assisted by Nacho Monreal with a cross.
52:20Foul by Kevin De Bruyne (Manchester City).
52:20Theo Walcott (Arsenal) wins a free kick on the left wing.
51:51Attempt saved. Sergio Agüero (Manchester City) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Kevin De Bruyne.
51:24Attempt blocked. Aleksandar Kolarov (Manchester City) left footed shot from outside the box is blocked.
47:24 BookingBooking Nicolás Otamendi (Manchester City) is shown the yellow card for a bad foul.
47:05Foul by Nicolás Otamendi (Manchester City).
47:05Olivier Giroud (Arsenal) wins a free kick in the defensive half.
46:01Corner, Arsenal. Conceded by Bacary Sagna.
45:00Second Half begins Arsenal 2, Manchester City 0.
45:00 SubstitutionSubstitution Substitution, Manchester City. Raheem Sterling replaces Fabian Delph.
45:00 +1:45 Half timeHalf Time First Half ends, Arsenal 2, Manchester City 0.
45:00 +0:53 Goal scoredGoal! Goal! Arsenal 2, Manchester City 0. Olivier Giroud (Arsenal) left footed shot from the left side of the box to the bottom right corner. Assisted by Mesut Özil.
45:00David Silva (Manchester City) wins a free kick on the right wing.
45:00Foul by Theo Walcott (Arsenal).
43:46Offside, Arsenal. Nacho Monreal tries a through ball, but Mesut Özil is caught offside.
42:54Foul by Nicolás Otamendi (Manchester City).
42:54Olivier Giroud (Arsenal) wins a free kick in the attacking half.
38:51Foul by Fabian Delph (Manchester City).
38:51Aaron Ramsey (Arsenal) wins a free kick in the defensive half.
38:27Attempt missed. Yaya Touré (Manchester City) header from the centre of the box misses to the left. Assisted by Kevin De Bruyne with a cross following a corner.
38:03Corner, Manchester City. Conceded by Laurent Koscielny.
34:42Corner, Arsenal. Conceded by Eliaquim Mangala.
32:41 Goal scoredGoal! Goal! Arsenal 1, Manchester City 0. Theo Walcott (Arsenal) right footed shot from outside the box to the bottom right corner. Assisted by Mesut Özil.
31:24Attempt missed. Kevin De Bruyne (Manchester City) right footed shot from the right side of the box is close, but misses to the left. Assisted by Sergio Agüero.
30:27 BookingBooking David Silva (Manchester City) is shown the yellow card.
30:25Foul by David Silva (Manchester City).
30:25Per Mertesacker (Arsenal) wins a free kick in the defensive half.
28:03Foul by David Silva (Manchester City).
28:03Mathieu Flamini (Arsenal) wins a free kick in the defensive half.
25:41Offside, Arsenal. Héctor Bellerín tries a through ball, but Joel Campbell is caught offside.
24:55Yaya Touré (Manchester City) wins a free kick in the defensive half.
24:55Foul by Olivier Giroud (Arsenal).
23:35Foul by Aleksandar Kolarov (Manchester City).
23:35Mesut Özil (Arsenal) wins a free kick in the defensive half.
23:06Corner, Manchester City. Conceded by Laurent Koscielny.
22:01Corner, Manchester City. Conceded by Petr Cech.
21:59Attempt saved. Kevin De Bruyne (Manchester City) left footed shot from outside the box is saved in the bottom right corner. Assisted by Bacary Sagna.
18:52Foul by Sergio Agüero (Manchester City).
18:52Joel Campbell (Arsenal) wins a free kick in the defensive half.
17:59Attempt blocked. Kevin De Bruyne (Manchester City) left footed shot from the right side of the box is blocked. Assisted by David Silva.
17:27Corner, Manchester City. Conceded by Theo Walcott.
12:46Theo Walcott (Arsenal) wins a free kick in the defensive half.
12:46Foul by Kevin De Bruyne (Manchester City).
12:16Attempt blocked. David Silva (Manchester City) left footed shot from the centre of the box is blocked. Assisted by Yaya Touré.
9:06Attempt missed. Fernandinho (Manchester City) right footed shot from outside the box is too high. Assisted by Aleksandar Kolarov.
8:18Foul by Aaron Ramsey (Arsenal).
8:18David Silva (Manchester City) wins a free kick in the defensive half.
7:32Aaron Ramsey (Arsenal) wins a free kick in the attacking half.
7:32Foul by David Silva (Manchester City).
6:32Attempt missed. David Silva (Manchester City) left footed shot from outside the box is high and wide to the left. Assisted by Bacary Sagna.
1:44Offside, Arsenal. Joel Campbell tries a through ball, but Olivier Giroud is caught offside.
1:24Laurent Koscielny (Arsenal) wins a free kick in the defensive half.
1:24Foul by Aleksandar Kolarov (Manchester City).
0:00First Half begins.
0:00Lineups are announced and players are warming up.
Live data and text provided by our data suppliers