Chris Froome (Team Sky) sealed an historic fourth Tour de France victory on Sunday after safely crossing the final finish line on the Champs-Élysées in Paris as Dylan Groenewegen (LottoNL-Jumbo) won stage 21 in a sprint finish.
Froome becomes the only rider in the Tour's history to hold four titles, and leaves him one away from equalling the record of five held jointly by Eddy Merckx, Jaques Anquetil, Bernard Hinault and Miguel Indurain.
The GC race was wrapped up on Saturday after the Marseille time trial, with 32-year-old Froome able to celebrate with his team-mates and the rest of the peloton en route to Paris in the early part of the 103km course from Montgeron on Sunday.
The racing got going in traditional fashion when the peloton rolled on to the Champs-Élysées for the first time with around 58km to go.
With no Marcel Kittel (Quick-Step) there to try and add to his five stage wins at this Tour, it was the last chance for those sprinters who hadn't taken a victory to salvage something before the race draws to its close.
The first breakaway tried to get up the road with 54km remaining after Daryl Impey (Orica-Scott) attacked, and eventually he was joined by Marcus Burghardt (Bora-Hansgrohe), Nils Politt (Katusha-Alpecin), Dion Smith (Wanty-Groupe Gobert), Sylvain Chavanel (Direct Energie), Michael Schär (BMC), Imanol Erviti (Movistar), Alexey Lutsenko (Astana), and Julien Vermote (Quick-Step).
They established a maximum gap of 22 seconds with the peloton not keen to give them much leeway. They tried their best to hold off the chasing bunch but were brought back to the group with just under 10km to go.
Dmitri Gruzdev tried an attack with around 6km to go but was quickly brought back, with Zdenek Stybar (Quick-Step) the next to try his luck, but was caught with 2.5km to go on the Place de la Concorde.
But it was then all lined up for the sprinters as they passed through towards the final straight of the Champs-Élysées, with Katusha working hard on the front for Alexander Kristoff.
But it was LottoNL-Jumbo who had their sprinter Groenewegen dropped off first at the front of the bunch on the final straight, and it looked like he may have gone too early as he launched his sprint.
Behind Edvald Boasson Hagen (Dimension Data) and Kristoff were first to react to the Dutchman's move, but didn't seem to have the legs to stay with him.
André Greipel (Lotto-Soudal) looked like he had the pace to beat Groenewegen, but ran out of road, and the 24-year-old was able to hold on to claim his first Tour de France victory.
Chris Froome rolled in safely behind among his team-mates, with no dropping back to pose for photos across the line this year considering the small gap to Rigoberto Uran (Cannondale-Drapac) in second on GC.
The Briton can now celebrate a hard fought and close fourth Tour de France victory.
Tour de France 2017, stage 21: Montgeron - Paris (Champs-Élysées) (103km)
1. Dylan Groenewegen (Ned) Team LottoNl-Jumbo, in 2-25-39
2. André Greipel (Ger) Lotto Soudal
3. Edvald Boasson Hagen (Nor) Dimension Data
4. Nacer Bouhanni (Fra) Cofidis, Solutions Credits
5. Alexander Kristoff (Nor) Katusha-Alpecin
6. Borut Bozic (Slo) Bahrain-Merida
7. Davide Cimolai (Ita) FDJ
8. Pierre Luc Perichon (Fra) Team Fortuneo - Oscaro
9. Rüdiger Selig (Ger) Bora-Hansgrohe
10. Daniele Bennati (Ita) Movistar Team, all same time
Final general classification
1. Christopher Froome (GBr) Team Sky, 86-20-55
2. Rigoberto Uran (Col) Cannondale-Drapac, at 54 secs
3. Romain Bardet (Fra) Ag2r La Mondiale, at 2-20
4. Mikel Landa (Esp) Team Sky, at 2-21
5. Fabio Aru (Ita) Astana, at 3-05
6. Daniel Martin (Irl) Quick-Step Floors, at 4-42
7. Simon Yates (GBr) Orica-Scott, at 6-14
8. Louis Meintjes (RSA) UAE Team Emirates, at 8-20
9. Alberto Contador (Esp) Trek-Segafredo, at 8-49
10. Warren Barguil (Fra) Team Sunweb, at 9-25
Points classification winner: Michael Matthews (Sunweb)
Mountains classification winner: Warren Barguil (Sunweb)
Young rider classification winner: Simon Yates (Orica-Scott)
Team classification: Team Sky
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1