The Danish cyclist had even looked an early contender for the final mountain stage too, a 152.8-kilometre ride from Le Pont-de-Claix to La Bastille with a steep climb to the finish.
But despite an attack with one kilometre to go, the Jumbo-Visma rider was no match for Giulio Ciccone (28) of Trek-Segafredo who bounced back from missing the Giro d'Italia due to COVID-19 and dedicated his victory to his fiancée whom he marries next week.
"My condition wasn't 100% so I started here with the Tour de France in my head but saw this week my condition getting better and better. So I'm really happy to close this week with a victory," Ciccone said.
"I will be married next week. This is a gift for my wife," he said.
Nevertheless, Vingegaard will celebrate overall victory after beating Briton Adam Yates (30), who finished two minutes and 23 seconds behind after nearly 30 hours of racing, while Australia's Ben O'Connor (27) was third.
"It's a very big thing for me to win this race, one of the biggest races in the world. So of course I'm very happy to win," said Vingegaard, who recently extended his contract with Jumbo-Visma until 2027.
"I think I can be very satisfied with the whole week. I'm in a good shape and the whole team rode fantastically.
"In a way, I'm surprised with the gaps in the overall standings. Now I'll relax a few days and then I'll do the last bit of preparation for the Tour de France. I still have a little bit of work to do, but it's not a lot."
The Tour de France runs from July 1st to July 23rd.