Robin van Persie and Cesc Fabregas both saw their first-half shots come back of the base of the same post.
City then had goalkeeper Joe Hart to thank after he produced a wonderful fingertip save to deny Van Persie on the hour as we had to be content with only a point.
The teams each finished with 10 men after full-backs Pablo Zabaleta and Bacary Sagna were shown straight red cards by referee Mike Jones for a needless clash by the touchline.
We almost snatched an early lead when Samir Nasri played Jack Wilshere into the left side of the penalty area - but his cut-back was just too far ahead of Van Persie, with Theo Walcott's cross from the goalline then hacked clear.
City - expected to shortly complete the £27million signing of striker Edin Dzeko from Wolfsburg - broke quickly down the right and James Milner drilled a low shot across the area.
Van Persie again went within inches of putting us ahead when, after nine minutes, the Dutchman created space for a shot from the edge of the City box - and promptly drilled the ball against the base of Hart's right-hand post.
After such a frantic start, it was no surprise to see the tempo of the match drop.
Gareth Barry was cautioned after 21 minutes when he clattered into Bacary Sagna as the right-back looked to break clear.
At the other end, a deep free-kick found its way through to Carlos Tevez at the back post, but Alex Song was able to divert the loose ball behind.
After 27 minutes, we again hit the woodwork after a quick break through Nasri and Fabregas down the left, with the Arsenal skipper cutting back inside to wrongfoot Heart only for his shot to bounce off the base of the same post as Van Persie's did.
From the rebound, Walcott smashed an angled drive against the other upright, but the offside flag was already raised.
There was a warning for us when City broke quickly down the right and Tevez drilled the ball just over from 20 yards.
We were calling for a penalty when Walcott's cross hit Vincent Kompany's trailing arm, but the referee instead gave a only a corner.
We continued to press as half-time approached, yet were thwarted by some brave last-gasp defending Arsenal soon were back on the offensive following the restart.
Walcott was almost released, but Wilshere's pass ran through to Hart.
On the hour, City's England number one made a fantastic save to send a goal-bound 25-yard drive from Van Persie over the crossbar.
City boss Roberto Mancini then made a change, replacing the ineffective Jo with England winger Adam Johnson and the visitors looked much more balanced.
As the match entered the final 22 minutes, Walcott was replaced by Arshavin.
Arsene Wenger then sent on Nicklas Bendtner, for Wilshere, with 10 minutes left, looking to give Arsenal more presence in attack.
Both teams finished the match with 10 men after full-backs Zabaleta and Sagna were shown straight red cards after pushing their heads together.
Despite four minutes of stoppage time, the breakthrough would not come and City held on for a point which keeps them second, but sees leaders Manchester United the night's big winners.