Hakim Ziyech's second-half strike was enough to see Chelsea book their place in the competitions's final for the second consecutive season.
Pep Guardiola's side have now been knocked out of the FA Cup at the semifinal stage in back-to-back campaigns.
The result also means that City will be unable to win all four major trophies this season, but could seal their first trophy with a win over Tottenham in the Carabao Cup next weekend.
City also suffered an injury blow after Kevin De Bruyne limped off at the start of the second half with an ankle injury.
Chelsea thought they opened the scoring inside six minutes through Ziyech but the goal was ruled out after Timo Werner was in an offside position in the build up.
However, Chelsea were the better team throughout the half but their best chance fell to Ben Chilwell who hit a close range volley wide of the post after 19 minutes.
City suffered a blow minutes after the break when De Bruyne picked up an ankle injury and was replaced by Phil Foden.
Less than 10 minutes after De Bruyne's departure, Chelsea scored after Werner set up Ziyech to score in an empty net after City goalkeeper Zack Steffen found himself in a poor position.
What was Zack Steffen doing on Chelsea's goal?
Shaka Hislop is befuddled by Zack Steffen's positioning on Chelsea's winning goal vs. Manchester City.
"You always have to have the feeling before the game that you want to score," the Morocco winger -- who has struggled to find his form after arriving at Stamford Bridge from Ajax Amsterdam last year -- told the BBC.
"It was a good delivery and I put it in easy," he said.
The American made up for his mistake moments later when he made a good save to deny Ziyech from doubling Chelsea's lead.
City came close to leveling the score but Ruben Dias was unable to convert his header from inside the box which sailed over the bar.
Substitute Christian Pulisic thought he grabbed a second in stoppage time but it was ruled out for offside but Chelsea held on to reach another FA Cup final.