Chelsea forward Havertz saved his first UEFA Champions League goal for the biggest stage at Estadio do Dragao on Sunday (AEST), opening the scoring late in the first half.
Thomas Tuchel's hugely impressive, well-drilled side held on to break City hearts, denying the Premier League champion a treble in its first UEFA Champions League final.
Tuchel had suffered the agony of defeat in the biggest game in European club football last year as Paris Saint-Germain boss, but his fellow German Havertz ensured he got the better of Pep Guardiola for a third time in just more than a month.
City, surprisingly starting without both Fernandinho and Rodri for only the second time this season, had the first chance when Ederson sent Raheem Sterling clear with a brilliant pass, but the forward's poor touch allowed a combination of Reece James and Edouard Mendy to advert the danger.
Timo Werner's intelligent runs and pace was unsettling the City defence, but he missed his kick when Germany team-mate Havertz picked him out before finishing tamely after Mason Mount presented him with a glorious chance.
A magnificent tackle from Antonio Rudiger denied Phil Foden when he looked set to open the scoring and it was Chelsea that took the lead after Thiago Silva had limped off.
Mount was the architect, spotting a huge hole at the heart of the City defence and threading a pinpoint throughball for Havertz, who rounded Ederson and slotted home three minutes before the break.
City suffered another big blow early in the second half when a tearful and shaken Kevin De Bruyne was forced off with a black eye after a heavy collision with Rudiger, who was shown a yellow card.
The verdict from referee Antonio Miguel Mateu Lahoz and the VAR (video assistant referee) was no penalty when City thought James had handled before Fernandinho replaced Bernardo Silva.
Substitute Christian Pulisic spurned a golden opportunity to give Chelsea breathing space 18 minutes from time, failing to hit the target after Havertz played him in on a blistering break.
Guardiola sent on Sergio Augero for his final City appearance but there was no dream swansong for City's record goalscorer, Riyad Mahrez slicing a shot just wide deep into seven minutes of stoppage-time as Chelsea held on to be crowned champion of Europe.