Kai Havertz’s goal three minutes before half-time was enough for the 2012 winners to take the Champions League trophy back to Stamford Bridge.
They defended brilliantly despite losing Thiago Silva to injury late in the first half and were always a threat on the counter-attack.
Havertz raced on to Mason Mount’s superb pass and nudged the ball past keeper Edersen before scoring into an empty net
Earlier, Timo Werner missed chances for the Blues after being set up by Havertz and then Ben Chilwell
City manager Pep Guardiola named an ultra-attacking line-up, leaving out both Rodri and Fernandinho and starting with Raheem Sterling.
But his team struggled to create chances against a team magnificently well organised by Thomas Tuchel, who has masterminded an amazing turnaround since taking over as boss when Chelsea were 10th in the Premier League and struggling badly.
Christian Pulisic, on as a substitute, missed a great chance to double the lead when he shot wide after being put through by Havertz.
But City, who managed just one effort on target, were unable to take advantage of that let-off as Chelsea stood firm in the closing stages.
They did have a major scare in injury time when Riyad Mahrez shot just wide.
Chelsea: Mendy, Azpilicueta, Silva (Christensen 38), Rudiger, James, Jorginho, Kante, Chilwell, Mount (Kovacic 79), Havertz, Werner (Pulisic 66).
Subs not used: Kepa, Caballero, Alonso, Zouma, Giroud, Hudson-Odoi, Ziyech, Gilmour, Emerson.