The London side made a great start to the game as Timo Werner missed two huge chances in the first 15 minutes.
Chelsea center-back Thiago Silva, the oldest player on the pitch, was subbed off due to injury and replaced by Andreas Christensen in the 39th minute.
After receiving a long ball from Mason Mount, Kai Havertz rounded Ederson to put Chelsea 1-0 ahead in the 42nd minute and scored his first-ever Champions League goal.
The first half ended 1-0 in front of 16,500 fans at the Estadio do Dragao stadium in Portugal's Porto.
In the second half, City were forced to make into their first change after Kevin De Bruyne was injured and manager Pep Guardiola subbed him off for Gabriel Jesus in the 60th minute.
In the 73rd minute, Chelsea could double their lead, but Pulisic missed another massive chance when he was one-on-one with Ederson.
Manchester City failed to score in the remaining of the game and the final ended 1-0, which means Chelsea claimed their second Champions League trophy.
They won their first title in 2012 by beating Bayern Munich on penalties.