Alexis Sanchez’s extra-time winner saw Arsenal come from behind to reach a record 20th Emirates FA Cup Final.
So often City’s hero, Sergio Aguero edged his team into the lead on the hour-mark, but Arsenal’s leveller came from the most unlikely of sources – left-back Nacho Monreal hitting only his third goal for the Gunners and his first since March 2015.
Arsene Wenger’s team had grown into the game after a tepid first half and got their winner when Sanchez lashed in from close range to set up a derby date with Chelsea back at Wembley on 27 May.
City were the better team in the opening 45 minutes, dominating possession, though they were unable to create many clear-cut chances.
Kevin De Bruyne was first to try his luck, but the Belgium playmaker fizzed a 25-yard effort wide across goal.
Arsenal responded with a blistering counter-attack that culminated in Alex Oxlade-Chamberlain crossing for Olivier Giroud, but the France striker’s header was comfortably caught by Claudio Bravo.
Midway through the first half Raheem Sterling was introduced in place of the injured David Silva and almost instantly made his mark, with perfectly-struck volley from the edge of the box that crept wide.
With both sides struggling for meaningful goalmouth action, City’s man for all occasions Aguero looked to force the issue, but his low drive hit the side-netting at the near post.