Cesc Fabregas pierced Manchester City's defence for the first time this season with a late strike to give Arsenal a hard-fought victory.
Arsenal defender Kolo Toure challenges Man City's Emile Mpenza
Sven-Goran Eriksson's side again looked impressive, with Martin Petrov and Emile Mpenza missing glorious chances.
But Arsenal took control, with City keeper Kasper Schmeichel saving Robin van Persie's 65th-minute penalty after Micah Richards fouled Alexander Hleb.
Fabregas then sealed the win, firing home powerfully with 10 minutes left.
Arsenal lost Philippe Senderos in the pre-match warm-up when he aggravated an ankle injury, forcing Arsene Wenger to draft Gilberto Silva into central defence.
And Arsenal's lack of cohesion at the back led to half-chances for City, who defended stoutly and counter-attacked with intent.
Petrov had already shot wastefully wide before Arsenal lost another defender after only 19 minutes, Bacary Sagna limping off after a collision with team-mate Mathieu Flamini.
City's Brazilian midfield man Elano fired into the arms of Arsenal keeper Manuel Almunia with players unmarked either side after another impressive break.
Arsenal came more into contention as the interval approached, with Van Persie sending a rising drive over the bar and then just failing to get on the end of Fabregas' cross.
But City were looking a well-organised outfit, and came closest to breaking the deadlock after 57 minutes, Petrov firing inches wide from Elano's pass.
Mpenza was then denied by the diving Almunia as City demonstrated why they have started the season so well.
Arsenal missed the best opportunity of the game after 65 minutes when referee Chris Foy awarded a penalty after Richards fouled Hleb.
But Schmeichel was the hero as he blocked Van Persie's spot-kick with his legs.
The youngster then saved well from Van Persie and Fabregas as Arsenal attempted to end their growing frustration.
The Gunners finally broke City's stubborn resistance with 10 minutes left, Fabregas taking a pass from Hleb and unleashing a high drive beyond Schmeichel from the angle.
Fuelled by a sense of relief, Arsenal poured forward and Schmeichel saved well from Tomas Rosicky, Hleb sending the rebound narrowly wide.
But there was almost a dramatic finish when Schmeichel joined the attack for a corner and forced a fine save from Almunia with a powerful header.
Arsenal manager Arsene Wenger:
"I know we'll fight until the last second. I always felt we would score but Manchester City are a good team and we had a good performance.
"They defended very well and they keep the ball well and we started a bit with the handbrake on.
"We look solid and strong and mentally very focussed and they are good signs."
Manchester City boss Sven-Goran Eriksson:
"I am disappointed we lost but we created some good opportunities.
"We shouldn't put our heads down - life goes on. The boys did a great job even though we lost.
"I'm very positive about the future. You have to accept in the Premier League you don't win every game. It is not good to lose but good to come here and feel you can keep up with Arsenal."
Arsenal: Almunia, Sagna (Denilson 19), Silva, Toure, Clichy, Hleb, Fabregas, Flamini, Rosicky, Adebayor (Eduardo 75), Van Persie (Song Billong 87).
Subs Not Used: Fabianski, Bendtner.
Goals: Fabregas 80.
Man City: Schmeichel, Corluka, Dunne, Richards, Garrido, Ireland (Ball 87), Hamann, Johnson, Petrov, Elano (Geovanni 75), Mpenza (Bianchi 75).
Subs Not Used: Hart, Onuoha.
Ref: C Foy (England).