Ziyech scored in the 55th minute when he tapped into an empty net from a cross by Timo Werner with City goalkeeper Zack Steffen in no man's land after racing off his line to close Werner down but then seeming to change his mind.
The win at Wembley leaves Chelsea coach Thomas Tuchel on course for a trophy after engineering a remarkable turnaround since he replaced Frank Lampard in January, with the Blues also in the Champions League semi-finals against Real Madrid.
Premier League leaders City's woes were compounded by the loss of midfielder Kevin de Bruyne early in the second half with an apparent ankle injury ahead of a busy end to the season for City who have a Champions League semi-final against Paris St Germain and the League Cup Final against Tottenham Hotspur.
Chelsea face Leicester City or Southampton, who play their semi-final tomorrow, in the FA Cup final on May 15.
Photo Sky Sports Caption: Hakim Ziyech celebrates after scoring Chelsea's winner