Bayern Munich won the Champions League for a sixth time by beating Paris St Germain 1-0 in the final thanks to a goal from former PSG youth academy graduate Kingsley Coman.
France international Coman appeared at the back post to head home in the 59th minute, completing a sweeping move from Bayern.
Coman's strike secured a treble for the Germans and punished PSG's wastefulness in the first half as Neymar and Kylian Mbappe both failed to beat Bayern keeper Manuel Neuer from close range.
PSG were playing in their first European Cup final after billions of euros of investment from the Qatar royal family but they fell short on the final step to glory.
It was not the classic or the goal-feast that many had anticipated but it was high-tempo battle and in the end Bayern just about deserved to emerge victorious.
The German outfit claimed Europe's elite club trophy by winning every game in the Champions League this season. The victory also completed a treble of trophies for Hansi Flick's side after they also won the Bundesliga and the German Cup.
The Bayern coach opted to start with Coman instead of Ivan Perisic on the left flank and it was an inspired decision.
Jerome Boateng was deemed fit to start in the Bayern central defence, having recovered from a knock picked up in the semi-final win over Olympique Lyonnais.
PSG goalkeeper Keylor Navas returned to their starting lineup having recovered from injury.
After a cagey opening, Neymar suddenly burst into life in the 18th minute, scampering into the box and firing off a left-foot shot but Neuer's outstretched leg foiled the Brazilian.
Four minutes later Bayern's goal threat, Robert Lewandowski, was found in the box by a left wing cross from Alphonso Davies and given room to turn but his shot struck the post.
PSG were certainly asking questions of the Bayern defence and the livewire Angel Di Maria, after a quick exchange on the edge of the area, created space for a shot but his effort, with his weaker right foot, flew high and wide.
Bayern's gamble to start Boateng looked mistaken when he hobbled off in the 25th minute, being replaced by Niklas Suele.
PSG's industrious midfielder Ander Herrera had a fierce effort from distance deflected wide, while at the other end Lewandowski's stooping header from close range forced a fine reflex save out of Navas.
Mbappe, PSG's talented French World Cup-winning striker, should have done better just before the break when, after a smart one-two with Herrera, he shot straight at Neuer.
It was a scrappy start to the second half with both sides struggling to find any composure but the game came alive just before the hour mark.
After a well-worked move down the right Joshua Kimmich picked out Coman at the back post and he got behind Thilo Kehrer to head firmly into the bottom corner.
Coman threatened in the same area again moments later, after Thomas Mueller found him with a cross, and Thiago Silva had to block the volley.
Bayern were starting to look in control and PSG coach Thomas Tuchel responded by throwing on his Italian midfielder Marco Verratti in a bid to change the momentum.
But Flick's side were in no mood to give up their lead and they fought for every ball with tenacity, reducing any chance PSG had to find openings for their expensive strikeforce.
One final opportunity did come, in stoppage time, when Mbappe broke down the inside-left channel and found Neymar who turned sharply but saw his shot go harmlessly wide.
The PSG dream was over, the debutant finalists defeated by the determination, organisation and remarkable consistency of the formidable and now six-times European champions.