Stones bundled home Phil Foden’s free-kick shortly after the break to open the scoring after both sides had had first-half efforts ruled out for offside.
Fernandinho then booked City’s place at Wembley with a volleyed finish on 83 minutes to set up a final meeting with Tottenham.
This encounter was far more entertaining than last month’s drab goalless derby draw, with Bruno Fernandes denied by a superb Zack Steffen stop and Kevin De Bruyne hitting the post after each side saw a goal ruled out for offside.
Those incidents all came in a frantic opening 15 minutes and Phil Foden had a goal ruled out for offside before time was called on a captivating first half in which City bossed possession.
United held firm until the 50th minute, when Stones ghosted in and capitalised on some questionable defending to turn home a Foden free-kick.
Dean Henderson kept United in it but Fernandinho ended any hope of a comeback on a night when City paid their respects to club great Colin Bell, who died aged 74 on Tuesday afternoon.
Additional reporting by PA.