Thousands of Chelsea fans were in the crowd of 14,110 to see their team lift the trophy in the Dragao Stadium as the final had been moved from Istanbul with Portugal operating under less severe coronavirus restrictions.
Havertz sparked the celebrations with his 42nd minute goal, created by a super pass from Mason Mount which split the defence and allowed the 21-year-old German to escape keeper Ederson and tap home.
City won the domestic championship by a distance but lost to Chelsea both in the league and FA Cup as Blues manager Thomas Tuchel completed a whirlwind story of success since taking over from Frank Lampard in January.
Defeat in their first Champions League final means City remain without the biggest prize in European football despite billions of dollars being spent over the years by their Abu Dhabi owners.
Chelsea are kings again and Tuchel has glory at the second attempt having lost in the final with Paris Saint-Germain last season. Like in 2012, the Stamford Bridge club won having changed managers mid-season.
"To share it with everybody is incredible," Tuchel told BT Sport. "I don't know what to feel.
"I was so grateful to arrive a second time [in the final].
"The [players] were determined to win this. We wanted to be a stone in their shoe. We encouraged everybody to step up and step out, to be more brave and create dangerous counter-attacks."
Chelsea's Christian Pulisic (R) misses a chance. Photo: Adam Davy/dpa.
Pep Guardiola was coaching in the Champions League final for the first time since his second triumph with Barcelona in 2011 but paid the price for a City line-up which was incredibly attacking.
Midfield anchors Fernandinho and Rodri were dropped as Ilkay Guendogan took the deepest role in the centre of the pitch while Kevin De Bruyne and Bernando Silva supported Riyad Mahrez, Raheem Sterling and Phil Foden.
"I did the best with my selection. I tried to pick the best selection to win the game," said Guardiola.
"We struggled to break the lines in the first half. The second half was much better.
"Against the defensive structure of Chelsea it wasn’t easy. We struggled a little bit with the long balls and second balls. In that moment you need inspiration."
City were exposed when Mount's long pass through the centre found Havertz cutting in to collect and finish his maiden Champions League goal.
"I don't know what to say. I really don't know what to say," said an emotional Havertz.
"I waited a long time. I've waited 15 years for this moment and now it's here."
Chelsea manager, Thomas Tuchel. Photo: Adam Davy/dpa.
Two previous chances
His goal was the least Chelsea deserved after Havertz's compatriot Timo Werner spurned two previous great chances to open the scoring.
The misfiring striker had a fresh air swipe from Havertz's cut back and sent a weak shot straight at Ederson having been found by Mount.
City in contrast could not get through the solid Chelsea shape which had Jorginho and N'Golo Kante snapping in the middle of the park and losing veteran defender Thiago Silva to first half injury did not disturb them.
Despite City's abundance of creative players, their best chance of the first half came from Ederson's long ball over the defence but Sterling's clever attempt was foiled by Chelsea keeper Edouard Mendy.
Chelsea players celebrate with the trophy after wining. Photo: Adam Davy/dpa.
They did not fare better at the start of the second half and De Bruyne's poor night ended in disappointing fashion when he was substituted for Gabriel Jesus with a head knock after a clash with Antonio Ruediger.
Fernandinho was introduced for Silva but the next opportunity came for Chelsea, when Havertz set up substitute Christian Pulisic to chip wide on the break.
Record scorer Sergio Aguero was thrown on with 14 minutes remaining but his last game for City ended in defeat when Mahrez's awkward shot flew a fraction high in the last minute of injury-time.