The German youngster, Chelsea’s record signing, kept his composure as he raced through and evaded goalkeeper Ederson before rolling the ball into an empty net in the 42nd minute to decide a tight encounter played in front of a 16,500 crowd.
Premier League champions City were favourites ahead of the final but suffered a desperately disappointing night in their first Champions League showpiece match.
Despite winning three of the last four Premier League titles for City, Spaniard Guardiola failed to deliver the coveted European trophy he last won with Barcelona in 2011.
For Chelsea’s German manager Thomas Tuchel the triumph comes after his Paris St Germain side suffered defeat in last season’s final against Bayern Munich and just four months after he took over from Frank Lampard at the west London club.
“To share it with everybody is incredible. We made it. Wow. I don’t know what to feel,” said Tuchel. “I was so grateful to arrive a second time (in the final). I felt different.
“The (players) were determined to win this. We wanted to be a stone in their (City’s) shoe. We encouraged everybody to step up and step out, to be more brave,” he said.
While Tuchel got his approach spot on, Guardiola’s team selection was surprising with Raheem Sterling brought in on the left, neither regular holding midfielder, Fernandinho or Rodri, picked and Ilkay Gundogan left to protect the back line.
It quickly became apparent the move had left City’s defence exposed with Chelsea creating early chances, three of which fell to German Timo Werner who failed to capitalise – miskicking one, shooting softly at Ederson and then finding the side-netting.
Gundogan’s already difficult task got harder when he was booked for a foul on Mason Mount in the 34th minute.
Chelsea also suffered a setback when their experienced Brazilian centre-back Thiago Silva went down awkwardly after a header and had to limp off six minutes before the break, being replaced by Andreas Christensen.
However, three minutes later Chelsea struck. Midfielder Mount split the City defence with a superb through ball and Ederson rushed out of his goal but was unable to stop Havertz from skipping past him and slotting into the unguarded net.
City’s night got worse when key midfielder Kevin De Bruyne had to go off with a concussion injury after an accidental clash with Antonio Rudiger left him on the ground, with Guardiola throwing on Brazilian striker Gabriel Jesus in his place.
Christian Pulisic came on for Chelsea to become the first American to play in a Champions League final and almost the first to score when he was slipped in by Havertz but then drifted his shot just wide of the post.
City gradually began to get the upper hand but their usual composure was lacking and it was not until deep into stoppage time that they went close with a hopeful effort from Riyad Mahrez that clipped the bar.
The final whistle set off wild celebrations for the Chelsea fans who had flown in for the game, while dejected City supporters headed off for the flights back to Manchester.
“Decisions are always to try to win the game,” said Guardiola, when asked to reflect on his team selection.
“The way we played the game in the second half, they had one counter attack with Pulisic. They’re a really good team, but we competed perfectly against them. In the second half we deserved to score one goal but we couldn’t do it.”
“I would like to say it was an exceptional season for us. Unfortunately we couldn’t win. We tried, but we couldn’t do it and will work harder from here,” added the Spaniard, whose side won the League Cup to go with their Premier League crown.
Tuchel has faced City three times in six weeks and won every time. Chelsea’s Russian owner Roman Abramovich, watching from the stands, must have had a wry smile to himself as once again his ruthless approach to managerial changes has paid off.