The Spaniard slid in his sixth goal of the season after 53 minutes to finally give City reward for some brilliant attacking play.
Yet Arsenal, although perhaps lucky not to have Alex Song sent off, threatened on a number of occasions and Joe Hart saved well from Thomas Vermaelen late on.
City settled quickly and had a chance to launch the ball into the Arsenal box after Mario Balotelli was tripped by Mikel Arteta.
Samir Nasri, booed heavily in the Carling Cup tie between the clubs earlier this month, was again barracked by the visiting fans before lobbing his free-kick straight to goalkeeper Wojciech Szczesny.
Nasri tried to slip in Sergio Aguero but his ball was too strong for the Argentinian.
Aguero spurned a good opportunity when he took a Pablo Zabaleta cross in his stride and fired over.
Aguero went through again moments later but was denied the space to shoot and could not find Balotelli.
Referee Phil Dowd then booked Song for an earlier foul on Silva and made a big call moments later when the same player felled Yaya Toure. Dowd again allowed City to play advantage but this time did not go back to speak to Song when the ball went dead.
Gervinho had Arsenal’s first serious opportunity but Joe Hart saved well and the goalkeeper then tipped behind an Aaron Ramsey effort from the resulting corner.
Balotelli almost gave City the lead with an opportunistic acrobatic shot after Per Mertesacker misjudged a bounce but Szczesny reacted quickly.
Ramsey appealed for a penalty in the 35th minute after a scuffed shot from Robin van Persie was deflected into his path and he went down under a Kolo Toure challenge.
Dowd saw nothing untoward and the ball was scrambled clear.
City midfielder Gareth Barry was booked after a risky tackle on Arteta from behind.
Aguero showed great close control on the edge of the box to create another chance for himself five minutes before the break but Szczesny saved again.
City caught Arsenal on the counter-attack to take the lead seven minutes after the restart.
Nasri found Balotelli in space down the left and the Italian charged forward to cut inside and shoot.
Szczesny parried but Aguero reacted quickly to head across goal for Silva to slide in and score.
It was a lead which was almost wiped out within a minute as, with City fans still celebrating, Arsenal powered forward and Theo Walcott forced Hart to tip over from 18 yards.
Van Persie thought he had equalised when he deftly chipped Hart three minutes later but the flag was raised for offside.
City stepped up the tempo with Aguero firing narrowly wide from distance and Nasri going through but opting to pass instead shoot when well placed.
Play quickly switched to the other end where Van Persie shot straight at Hart but City were soon back on the attack.
Zabaleta almost made Arsenal pay when he seized on a poor pass from Laurent Koscielny but drove against the post with Szczesny beaten.
Walcott appeared unhappy when he was replaced by Andrey Arshavin with 20 minutes remaining while City attempted to tighten up by sending on James Milner for Balotelli.
Song survived for a second time after clashing with Vincent Kompany as Dowd again chose not to show him a second yellow card.
Advantage was played and Szczesny saved low from Aguero.
Dowd was also lenient with Arteta after fouling Yaya Toure and Barry in quick succession, the referee only booking the Spaniard for the first offence.
Richards enjoyed some luck when a Koscielny cross caught his arm in the box and Dowd deemed it accidental.
Arsenal pressed until the end with Arshavin driving wide and Thomas Vermaelen forcing Hart to make a brilliant save with a well-struck shot following a short free-kick.