Denmark's Jonas Vingegaard secured his first Tour de France victory as Jasper Philipsen of Belgium won the sprint on the final stage in Paris.
Philipsen was an easy winner on the Champs-Elysees while Vingegaard, 25, finished alongside his Jumbo-Visma team-mates after three weeks of racing.
He beat last year's champion Tadej Pogacar by two minutes 43 seconds in the general classification.
Britain's former winner Geraint Thomas came third overall.
The 36-year-old Welshman has now finished on the Tour podium three times in his career.
"It's just incredible. I've finally won the Tour," Vingegaard said.
"Now nothing can go wrong any more. I'm sitting here with my daughter. It's just incredible.
"It is the biggest cycling race of the year, the biggest one you can win and now I have done it. Nobody can take this away from me."
The runner-up last year, Vingegaard also claimed the polka dot king of the mountains jersey, while team-mate Wout van Aert won the points classification green jersey.
Pogacar, 23, had to settle for the white jersey as the best young rider after his dream of a third straight Tour title was ended in the mountains.
Vingegaard, who won three stages in all, is Denmark's second Tour winner after Bjarne Riis' victory in 1996.
Where the 2022 Tour was won
The 2022 Tour was ultimately decided on stage 11, as Vingegaard launched a stunning attack on the final Col du Granon climb to take the overall lead from Pogacar.
Pogacar had worn the yellow jersey for five stages, and led by 39 seconds, but Vingegaard took full advantage of a rare difficult moment for the Slovenian to establish a lead of over two minutes to his main rival that day.
Pogacar was able to edge Vingegaard to win an epic mountain battle on stage 17 - however the Dane's overall victory was all but confirmed as he extended his lead with a stunning stage 18 victory at Hautacam.
That stage also witnessed a brilliant act of sportsmanship from Vingegaard, who waited for and shook hands with Pogacar after the two-time champion crashed as the pair went head-to-head for the yellow jersey.
It was a demonstration of the huge respect between two young riders who look set to enjoy many more memorable battles at the Tour for years to come.
"I always had the feeling that at least I could fight for the win," Vingegaard said.
"But I think in the end when I really started believing was after Hautacam. I always believed in it but I was thinking something really has to go wrong after Hautacam."
Thomas keen to 'soak up' third place
Geraint Thomas' team Ineos Grenadiers won the best team awardWelshman Thomas, the 2018 champion and 2019 runner-up, said he was "satisfied" after "proving a few people wrong" with his performance at this year's Tour.
The 36-year-old was a clear third-best behind what he has described as two "exceptional talents" in Vingegaard and Pogacar, but also comfortably ahead of the rest of the field.
Not content to enjoy his achievement on the Champs-Elysees, Thomas attacked inside the final few kilometres of the iconic final stage alongside team-mate Filippo Ganna, before Pogacar then enjoyed a brief spell on the front.
Asked about that move, Thomas told ITV: "We knew we were always up against it but you've just got to have a go. I just enjoyed racing."
On sealing another podium finish, he added: "I can see I'm much closer to the end of my career than the start so I'm really making the most of it.
"I just want to soak it all in and enjoy days like this because they don't come around too often."
Stage 21 results
1. Jasper Philipsen (Bel/Alpecin-Deceuninck) 2hrs 58mins 32secs
2. Dylan Groenewegen (Ned/Team BikeExchange-Jayco) same time
3. Alexander Kristoff (Nor/Intermarche-Wanty-Gobert Materiaux)
4. Jasper Stuyven (Bel/Trek-Segafredo)
5. Peter Sagan (Svk/TotalEnergies)
6. Jeremy Lecroq (Fra/B&BHotels-KTM)
7. Danny van Poppel (Ned/BORA-Hansgrohe)
8. Caleb Ewan (Aus/Lotto-Soudal)
9. Hugo Hofstetter (Fra/Team Arkea-Samsic)
10. Fred Wright (GB/Bahrain Victorious)
Final general classification standings
1. Jonas Vingegaard (Den/Jumbo-Visma) 79hrs 33mins 20secs
2. Tadej Pogacar (Slo/UAE Team Emirates) +2:43
3. Geraint Thomas (GB/Ineos Grenadiers) +7:22
4. David Gaudu (Fra/Groupama-FDJ) +13:39
5. Aleksandr Vlasov (Bora-hansgrohe) +15:46
6. Nairo Quintana (Col/Arkea-Samsic) +16:33
7. Romain Bardet (Fra/Team DSM) +18:11
8. Louis Meintjes (SA/Intermarche-Wanty Gobert Materiaux) +18:44
9. Alexey Lutsenko (Kaz/Astana-Qazaqstan Team) +22:56
10. Adam Yates (GB/Ineos Grenadiers) +24:52