
Friday, May 15: Stage 7, Formia - Blockhaus, 244 km
Stage 7 map & profile | Stage 7 photos

Jonas Vingegaard wins stage seven. La Presse photo
Bill McGann’s book Why Your Bike Is Made in Asia: My career in bicycles as I watched two continents squander an industry is available in print, Kindle eBook & Audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the Blockhaus finish at 2:35 PM, local time: 3C (37F), snow showers, with the wind from the north-northeast at 6 km/hr (4 mph). There is a 51% chance of the snow continuing, and it is forecast to end at 4:30 PM.
The stage: An epic Apennine stage—and the longest of the entire Giro. The first section runs along the coast of southern Lazio, passing through Sperlonga and Gaeta before touching Formia once again and heading northward. After Venafro, the route follows a fast-flowing road leading to Rionero Sannitico and Castel di Sangro. The first KOM is reached at Roccaraso, followed by the cresting of the Passo di San Leonardo before a long descent leads to Roccamorice, where the 13 km final climb begins.
Final Kilometers
The final 13 km consist entirely of climbing on a narrow road featuring numerous hairpin bends. For nearly 10 km, the gradient remains above 9%, with peaks reaching up to 14%. There is a very brief false flat just 500 m from the finish line. The final straight (asphalt; 200 m long, 6 m wide) is uphill, with a gradient of around 8%.
About the finish:
Its name might sound like an Alpine summit near the Austrian border, but Blockhaus rises dramatically from the Maiella massif in Abruzzo. The name dates back to the 19th century, coined by an Austrian military commander stationed there with a platoon of soldiers, after a wooden fort with a rectangular stone base was built around 1863, during post-unification Italy, in an attempt to combat brigand activity in the region.
Today, it stands as one of the Giro d’Italia’s iconic summit finishes and, at 13.6 km at an average of 8.4%, it is a genuine, brutal and highly selective climb. Its Giro debut in 1967 also marked the arrival of a certain Eddy Merckx, who claimed his first-ever Giro stage win on these very slopes.
The race: Here's the report from stage winner Jonas Vingegaard's Team Visma | Lease a Bike:
Jonas Vingegaard has won the seventh stage of the Giro d’Italia. The Danish team leader of Team Visma | Lease a Bike soloed to victory on the Blockhaus. With this win, Vingegaard has completed the trilogy of stage victories in all three Grand Tours.
“It’s absolutely amazing, a dream come true”, Vingegaard beams afterward. “It’s something I honestly never thought would be possible. I really have to thank the team for that. My teammates worked incredibly hard today, and I’m very happy that I was able to finish it off for them. It’s truly been a fantastic day for us.”

Early in the stage the peloton races along the coast. RCS photo
Vingegaard becomes the 115th rider in the history of cycling to win a stage in the Giro d’Italia (1), Tour de France (4), and Vuelta a España (5). The Dane achieved the milestone by by finishing solo at top of the Blockhaus, following strong work from his teammates. The yellow-and-black squad controlled the race throughout the day, kept the breakaway within reach, and ensured that Vingegaard was perfectly positioned both before and on the slopes of the Blockhaus.
After powerful efforts from Davide Piganzoli and Sepp Kuss on the final climb, Vingegaard launched his attack. The 29-year-old rider soon dropped both Felix Gall and Giulio Pellizzari before soloing uncontested to the stage victory atop the Blockhaus. With the win, Vingegaard moves up to second place in the general classification. He now trails pink jersey holder Afonso Eulálio by just over three minutes.

On the Blockhaus climb: Jonas Vingegaard and GC leader Afonso Eulalio are right up front. In the front group are: Afonso Eulálio (Bahrain Victorious), Felix Gall and Gregor Mühlberger (Decathlon CMA CGM), Giulio Ciccone (Lidl-Trek), Thymen Arensman (Netcompany INEOS), Jai Hindley and Giulio Pellizzari (Red Bull-BORA-hansgrohe), Ben O’Connor (Jayco AlUla), Jonas Vingegaard and Sepp Kuss (Visma | Lease a Bike), Davide Piganzoli (Polti VisitMalta), Michael Storer and Mathys Rondel (Tudor).
“It was a very tough climb. There was a strong headwind, which made it even harder. Once the moment came to attack, I didn’t hesitate”, Vingegaard explains. “It’s great that I was able to take back a lot of time on Eulálio today and gain an advantage over the rest of my rivals. Felix was incredibly strong today and is definitely someone we have to keep an eye on. We’re really looking forward to what the rest of the Giro d’Italia will bring.”

On the Blockhaus climb with 5.6 kilometers to go, the Maglia Rosa Afonso Eulalio is dropped by the lead group.
For Team Visma | Lease a Bike, it marks a fifteenth consecutive Grand Tour with at least one stage victory.

Bam! Jonas Vingegaard drops Giulio Pellizzari & goes solo
Complete results:
244 kilometers raced at an average speed of 39.648 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 6hr 9min 15sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 13sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 1:02 |
| 4 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 1:05 |
| 5 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 6 | Mathys Rondel | Tudor Pro Cycling Team | 1:29 |
| 7 | Giulio Ciccone | Lidl-Trek | 1:40 |
| 8 | Derek Gee-West | Lidl-Trek | 1:42 |
| 9 | Michael Storer | Tudor Pro Cycling Team | 1:44 |
| 10 | Thymen Arensman | Netcompany INEOS Cycling Team | s.t. |
| 11 | Jan Hirt | NSN Cycling Team | 2:13 |
| 12 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 13 | Martin López | XDS Astana Team | 2:42 |
| 14 | Wout Poels | Unibet Rose Rockets | 2:55 |
| 15 | Afonso Eulalio | Bahrain Victorious | s.t. |
| 16 | Davide Piganzoli | Team Visma | Lease a Bike | s.t. |
| 17 | Markel Beloki | EF Education-EasyPost | 2:57 |
| 18 | Damiano Caruso | Bahrain Victorious | s.t. |
| 19 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 20 | Gregor Mühlberger | Decathlon CMA CGM Team | s.t. |
| 21 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 22 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 3:43 |
| 23 | Lennert Van Eetvelt | Lotto-Intermarché | 3:47 |
| 24 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 4:11 |
| 25 | Johannes Kulset | Uno-X Mobility | 4:24 |
| 26 | Jan Christen | UAE Team Emirates-XRG | 4:29 |
| 27 | Alexander Cepeda | EF Education-EasyPost | 4:31 |
| 28 | Christian Scaroni | XDS Astana Team | 4:44 |
| 29 | Javier Romo | Movistar Team | 5:47 |
| 30 | Einer Rubio | Movistar Team | s.t. |
| 31 | Enric Mas | Movistar Team | s.t. |
| 32 | Juan Pedro Lopez | Movistar Team | s.t. |
| 33 | Igor Arrieta | UAE Team Emirates-XRG | 6:15 |
| 34 | Nickolas Zukowsky | Pinarello-Q36.5 Pro Cycling Team | 7:05 |
| 35 | Filippo Zana | Soudal Quick-Step | 7:48 |
| 36 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 37 | Ludovico Crescioli | Team Polti-VisitMalta | s.t. |
| 38 | Alan Hatherly | Team Jayco-AlUla | s.t. |
| 39 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | s.t. |
| 40 | Rémy Rochas | Groupama-FDJ United | 8:14 |
| 41 | Josh Kench | Groupama-FDJ United | 8:16 |
| 42 | Koen Bouwman | Team Jayco-AlUla | s.t. |
| 43 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 8:23 |
| 44 | Magnus Sheffield | Netcompany INEOS Cycling Team | 13:23 |
| 45 | Jack Haig | Netcompany INEOS Cycling Team | s.t. |
| 46 | Jhonatan Narvaez | UAE Team Emirates-XRG | s.t. |
| 47 | William Barta | Tudor Pro Cycling Team | s.t. |
| 48 | Diego Ulissi | XDS Astana Team | s.t. |
| 49 | Brieuc Rolland | Groupama-FDJ United | 13:47 |
| 50 | Bart Lemmen | Team Visma | Lease a Bike | 15:15 |
| 51 | Victor Campenaerts | Team Visma | Lease a Bike | s.t. |
| 52 | Johannes Staune-Mittet | Decathlon CMA CGM Team | 15:41 |
| 53 | Callum Scotson | Decathlon CMA CGM Team | s.t. |
| 54 | Manuele Tarozzi | Bardiani-CSF 7 Saber | s.t. |
| 55 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 56 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 57 | Thomas Pesenti | Team Polti-VisitMalta | s.t. |
| 58 | Michael Valgren | EF Education-EasyPost | s.t. |
| 59 | Jardi Van Der Lee | EF Education-EasyPost | 16:19 |
| 60 | Nelson Oliveira | Movistar Team | 17:29 |
| 61 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | s.t. |
| 62 | Matteo Sobrero | Lidl-Trek | s.t. |
| 63 | Diego Sevilla | Team Polti-VisitMalta | 18:41 |
| 64 | Alessandro Pinarello | NSN Cycling Team | 19:13 |
| 65 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 66 | Filippo Turconi | Bardiani-CSF 7 Saber | s.t. |
| 67 | Tobias Bayer | Alpecin-Premier Tech | s.t. |
| 68 | Lorenzo Rota | Lotto-Intermarché | s.t. |
| 69 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 70 | Lawrence Warbasse | Tudor Pro Cycling Team | s.t. |
| 71 | Edoardo Zambanini | Bahrain Victorious | s.t. |
| 72 | Alessandro Tonelli | Team Polti-VisitMalta | s.t. |
| 73 | Martin Tjøtta | Uno-X Mobility | s.t. |
| 74 | Cyril Barthe | Groupama-FDJ United | s.t. |
| 75 | Warren Barguil | Team Picnic PostNL | s.t. |
| 76 | Filippo Ganna | Netcompany INEOS Cycling Team | s.t. |
| 77 | Mick van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 78 | Lorenzo Milesi | Movistar Team | 19:54 |
| 79 | Simone Gualdi | Lotto-Intermarché | s.t. |
| 80 | Vicente Rojas | Bardiani-CSF 7 Saber | 21:43 |
| 81 | David González | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 82 | Dion Smith | NSN Cycling Team | 22:07 |
| 83 | Alec Segaert | Bahrain Victorious | s.t. |
| 84 | Connor Swift | Netcompany INEOS Cycling Team | 22:45 |
| 85 | Mikkel Bjerg | UAE Team Emirates-XRG | s.t. |
| 86 | Ethan Vernon | NSN Cycling Team | 23:25 |
| 87 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 88 | Paul Penhoët | Groupama-FDJ United | s.t. |
| 89 | Francesco Busatto | Alpecin-Premier Tech | s.t. |
| 90 | Andrea Raccagni Noviero | Soudal Quick-Step | s.t. |
| 91 | Mirco Maestri | Team Polti-VisitMalta | s.t. |
| 92 | Pascal Ackermann | Team Jayco-AlUla | s.t. |
| 93 | Nikita Tsvetkov | Bardiani-CSF 7 Saber | s.t. |
| 94 | Tim Rex | Team Visma | Lease a Bike | s.t. |
| 95 | Jensen Plowright | Alpecin-Premier Tech | s.t. |
| 96 | Oliver Naesen | Decathlon CMA CGM Team | s.t. |
| 97 | Jasper Stuyven | Soudal Quick-Step | s.t. |
| 98 | Axel Huens | Groupama-FDJ United | s.t. |
| 99 | Jake Stewart | NSN Cycling Team | s.t. |
| 100 | Christopher Juul-Jensen | Team Jayco-AlUla | s.t. |
| 101 | Rasmus Søjberg Pedersen | Decathlon CMA CGM Team | s.t. |
| 102 | Chris Hamilton | Team Picnic PostNL | s.t. |
| 103 | Jonas Geens | Alpecin-Premier Tech | s.t. |
| 104 | Nick Schultz | NSN Cycling Team | s.t. |
| 105 | Tim Torn Teutenberg | Lidl-Trek | s.t. |
| 106 | Paul Magnier | Soudal Quick-Step | s.t. |
| 107 | Ben Turner | Netcompany INEOS Cycling Team | s.t. |
| 108 | Ayco Bastiaens | Soudal Quick-Step | s.t. |
| 109 | Robert Donaldson | Team Jayco-AlUla | s.t. |
| 110 | Fran Miholjevic | Bahrain Victorious | s.t. |
| 111 | Remi Cavagna | Groupama-FDJ United | s.t. |
| 112 | Thomas Silva | XDS Astana Team | s.t. |
| 113 | Alberto Bettiol | XDS Astana Team | s.t. |
| 114 | Filippo Magli | Bardiani-CSF 7 Saber | s.t. |
| 115 | James Shaw | EF Education-EasyPost | s.t. |
| 116 | Toon Aerts | Lotto-Intermarché | s.t. |
| 117 | Robert Stannard | Bahrain Victorious | s.t. |
| 118 | Orluis Aular | Movistar Team | s.t. |
| 119 | Fabio Van den Bossche | Soudal Quick-Step | s.t. |
| 120 | Davide Ballerini | XDS Astana Team | 23:36 |
| 121 | Tim Naberman | Team Picnic PostNL | 24:00 |
| 122 | Luca Vergallito | Alpecin-Premier Tech | 26:06 |
| 123 | Edward Planckaert | Alpecin-Premier Tech | s.t. |
| 124 | Timo Kielich | Team Visma | Lease a Bike | 27:53 |
| 125 | Jonas Rutsch | Lotto-Intermarché | s.t. |
| 126 | Luca Paletti | Bardiani-CSF 7 Saber | s.t. |
| 127 | Mathijs Paasschens | Bahrain Victorious | s.t. |
| 128 | Ryan Mullen | NSN Cycling Team | 28:16 |
| 129 | Iván García Cortina | Movistar Team | 28:22 |
| 130 | Johan Jacobs | Groupama-FDJ United | s.t. |
| 131 | Fredrik Dversnes | Uno-X Mobility | 29:06 |
| 132 | Casper van Uden | Team Picnic PostNL | 31:30 |
| 133 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 134 | Sean Flynn | Team Picnic PostNL | s.t. |
| 135 | Mattia Bais | Team Polti-VisitMalta | s.t. |
| 136 | Sjoerd Bax | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 137 | Andrea Mifsud | Team Polti-VisitMalta | s.t. |
| 138 | Fabian Lienhard | Tudor Pro Cycling Team | s.t. |
| 139 | Giovanni Lonardi | Team Polti-VisitMalta | s.t. |
| 140 | Dries van Gestel | Soudal Quick-Step | s.t. |
| 141 | Darren Rafferty | EF Education-EasyPost | s.t. |
| 142 | Amanuel Ghebreigzabhier | Lidl-Trek | s.t. |
| 143 | Fabio Christen | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 144 | Enrico Zanoncello | Bardiani-CSF 7 Saber | s.t. |
| 145 | Tobias Lund Andresen | Decathlon CMA CGM Team | 32:25 |
| 146 | Tord Gudmestad | Decathlon CMA CGM Team | s.t. |
| 147 | António Morgado | UAE Team Emirates-XRG | 32:54 |
| 148 | Nico Denz | Red Bull-BORA-hansgrohe | 33:26 |
| 149 | Tomas Kopecky | Unibet Rose Rockets | 35:06 |
| 150 | Matyas Kopecky | Unibet Rose Rockets | s.t. |
| 151 | Corbin Strong | NSN Cycling Team | s.t. |
| 152 | Jonathan Milan | Lidl-Trek | s.t. |
| 153 | Markus Hoelgaard | Uno-X Mobility | 35:49 |
| 154 | Johan Price-Pejtersen | Alpecin-Premier Tech | s.t. |
| 155 | Max Walscheid | Lidl-Trek | s.t. |
| 156 | Frank van den Broek | Team Picnic PostNL | 36:14 |
| 157 | Luca Mozzato | Tudor Pro Cycling Team | 36:18 |
| 158 | Robin Froidevaux | Tudor Pro Cycling Team | 37:24 |
| 159 | Arjen Livyns | XDS Astana Team | s.t. |
| 160 | Lukas Kubis | Unibet Rose Rockets | 37:28 |
| 161 | Elmar Reinders | Unibet Rose Rockets | s.t. |
| 162 | Dylan Groenewegen | Unibet Rose Rockets | s.t. |
| 163 | Hartthijs de Vries | Unibet Rose Rockets | s.t. |
| 164 | Niklas Larsen | Unibet Rose Rockets | s.t. |
| 165 | Matteo Malucelli | XDS Astana Team | 39:39 |
| 166 | Simone Consonni | Lidl-Trek | s.t. |
| 167 | Sakarias Koller Løland | Uno-X Mobility | s.t. |
| 168 | Erlend Blikra | Uno-X Mobility | s.t. |
| 169 | Martin Marcellusi | Bardiani-CSF 7 Saber | s.t. |
GC after stage 7:
1,266 kilometers raced so far at an average speed of 40.852 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 30hr 59min 23sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 3min 17sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 3:34 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 4:25 |
| 5 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:28 |
| 6 | Ben O'Connor | Team Jayco-AlUla | 4:32 |
| 7 | Mathys Rondel | Tudor Pro Cycling Team | 4:56 |
| 8 | Giulio Ciccone | Lidl-Trek | 4:57 |
| 9 | Thymen Arensman | Netcompany INEOS Cycling Team | 5:07 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 5:11 |
| 11 | Christian Scaroni | XDS Astana Team | 5:23 |
| 12 | Jan Hirt | NSN Cycling Team | 5:40 |
| 13 | Derek Gee-West | Lidl-Trek | 6:10 |
| 14 | Igor Arrieta | UAE Team Emirates-XRG | 6:11 |
| 15 | Egan Bernal | Netcompany INEOS Cycling Team | 6:18 |
| 16 | Davide Piganzoli | Team Visma | Lease a Bike | 6:22 |
| 17 | Damiano Caruso | Bahrain Victorious | 6:24 |
| 18 | Markel Beloki | EF Education-EasyPost | s.t. |
| 19 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 6:41 |
| 20 | Johannes Kulset | Uno-X Mobility | 6:46 |
| 21 | Lennert Van Eetvelt | Lotto-Intermarché | 7:12 |
| 22 | Sepp Kuss | Team Visma | Lease a Bike | 7:25 |
| 23 | Jan Christen | UAE Team Emirates-XRG | 7:50 |
| 24 | Alexander Cepeda | EF Education-EasyPost | 7:58 |
| 25 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 8:11 |
| 26 | Gregor Mühlberger | Decathlon CMA CGM Team | 8:29 |
| 27 | Martin López | XDS Astana Team | 9:04 |
| 28 | Enric Mas | Movistar Team | 9:14 |
| 29 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 11:34 |
| 30 | Josh Kench | Groupama-FDJ United | 11:43 |
| 31 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 11:50 |
| 32 | Javier Romo | Movistar Team | 12:09 |
| 33 | Ludovico Crescioli | Team Polti-VisitMalta | 12:36 |
| 34 | Koen Bouwman | Team Jayco-AlUla | 12:41 |
| 35 | Wout Poels | Unibet Rose Rockets | 16:17 |
| 36 | Juan Pedro Lopez | Movistar Team | 16:51 |
| 37 | Gianmarco Garofoli | Soudal Quick-Step | 18:49 |
| 38 | Einer Rubio | Movistar Team | 19:07 |
| 39 | Filippo Zana | Soudal Quick-Step | 21:08 |
| 40 | Andreas Leknessund | Uno-X Mobility | 22:03 |
| 41 | Florian Stork | Tudor Pro Cycling Team | 22:34 |
| 42 | Jhonatan Narvaez | UAE Team Emirates-XRG | 23:17 |
| 43 | Andrea Raccagni Noviero | Soudal Quick-Step | 24:09 |
| 44 | Manuele Tarozzi | Bardiani-CSF 7 Saber | 24:38 |
| 45 | Lorenzo Milesi | Movistar Team | 25:56 |
| 46 | Nickolas Zukowsky | Pinarello-Q36.5 Pro Cycling Team | 26:17 |
| 47 | Diego Ulissi | XDS Astana Team | 27:44 |
| 48 | Callum Scotson | Decathlon CMA CGM Team | 27:46 |
| 49 | Bart Lemmen | Team Visma | Lease a Bike | 29:54 |
| 50 | Magnus Sheffield | Netcompany INEOS Cycling Team | 30:39 |
| 51 | Matteo Sobrero | Lidl-Trek | 30:49 |
| 52 | Victor Campenaerts | Team Visma | Lease a Bike | 30:58 |
| 53 | Martin Tjøtta | Uno-X Mobility | 31:04 |
| 54 | Alan Hatherly | Team Jayco-AlUla | s.t. |
| 55 | William Barta | Tudor Pro Cycling Team | 31:10 |
| 56 | Thomas Silva | XDS Astana Team | 32:32 |
| 57 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | 32:47 |
| 58 | Alessandro Pinarello | NSN Cycling Team | 33:34 |
| 59 | Michael Valgren | EF Education-EasyPost | 34:27 |
| 60 | Nelson Oliveira | Movistar Team | 34:35 |
| 61 | Jack Haig | Netcompany INEOS Cycling Team | 35:35 |
| 62 | Brieuc Rolland | Groupama-FDJ United | 37:20 |
| 63 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 37:23 |
| 64 | Alessandro Tonelli | Team Polti-VisitMalta | 38:02 |
| 65 | Edoardo Zambanini | Bahrain Victorious | 38:04 |
| 66 | Simone Gualdi | Lotto-Intermarché | 38:45 |
| 67 | Thomas Pesenti | Team Polti-VisitMalta | 38:57 |
| 68 | Ben Turner | Netcompany INEOS Cycling Team | 39:08 |
| 69 | Johannes Staune-Mittet | Decathlon CMA CGM Team | 39:30 |
| 70 | Orluis Aular | Movistar Team | 39:46 |
| 71 | Alec Segaert | Bahrain Victorious | 39:54 |
| 72 | Nick Schultz | NSN Cycling Team | 41:45 |
| 73 | Luca Paletti | Bardiani-CSF 7 Saber | 41:49 |
| 74 | Lawrence Warbasse | Tudor Pro Cycling Team | 43:33 |
| 75 | Filippo Ganna | Netcompany INEOS Cycling Team | 44:38 |
| 76 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | 45:00 |
| 77 | Toon Aerts | Lotto-Intermarché | 45:37 |
| 78 | Warren Barguil | Team Picnic PostNL | 45:45 |
| 79 | Francesco Busatto | Alpecin-Premier Tech | 45:54 |
| 80 | Lorenzo Rota | Lotto-Intermarché | 47:25 |
| 81 | Tobias Bayer | Alpecin-Premier Tech | s.t. |
| 82 | Gianni Moscon | Red Bull-BORA-hansgrohe | 48:29 |
| 83 | Paul Magnier | Soudal Quick-Step | 48:56 |
| 84 | Andrea Mifsud | Team Polti-VisitMalta | 49:03 |
| 85 | Darren Rafferty | EF Education-EasyPost | 50:15 |
| 86 | Filippo Turconi | Bardiani-CSF 7 Saber | 50:42 |
| 87 | Axel Huens | Groupama-FDJ United | 51:06 |
| 88 | Jasper Stuyven | Soudal Quick-Step | 52:07 |
| 89 | Vicente Rojas | Bardiani-CSF 7 Saber | s.t. |
| 90 | Mick van Dijke | Red Bull-BORA-hansgrohe | 52:37 |
| 91 | Filippo Magli | Bardiani-CSF 7 Saber | 52:38 |
| 92 | Nikita Tsvetkov | Bardiani-CSF 7 Saber | 53:28 |
| 93 | Diego Sevilla | Team Polti-VisitMalta | 53:35 |
| 94 | Corbin Strong | NSN Cycling Team | 53:57 |
| 95 | Christopher Juul-Jensen | Team Jayco-AlUla | 54:19 |
| 96 | Mikkel Bjerg | UAE Team Emirates-XRG | 54:42 |
| 97 | Fabio Van den Bossche | Soudal Quick-Step | 54:44 |
| 98 | Robert Stannard | Bahrain Victorious | 54:48 |
| 99 | Tobias Lund Andresen | Decathlon CMA CGM Team | s.t. |
| 100 | Pascal Ackermann | Team Jayco-AlUla | 56:36 |
| 101 | Mirco Maestri | Team Polti-VisitMalta | s.t. |
| 102 | Alberto Bettiol | XDS Astana Team | s.t. |
| 103 | Madis Mihkels | EF Education-EasyPost | 56:49 |
| 104 | Rémy Rochas | Groupama-FDJ United | 57:06 |
| 105 | Iván García Cortina | Movistar Team | 57:22 |
| 106 | Robert Donaldson | Team Jayco-AlUla | 58:11 |
| 107 | Ethan Vernon | NSN Cycling Team | 58:23 |
| 108 | Fredrik Dversnes | Uno-X Mobility | 58:25 |
| 109 | Mathijs Paasschens | Bahrain Victorious | 59:09 |
| 110 | Remi Cavagna | Groupama-FDJ United | 59:26 |
| 111 | James Shaw | EF Education-EasyPost | s.t. |
| 112 | Rasmus Søjberg Pedersen | Decathlon CMA CGM Team | 59:42 |
| 113 | Jardi Van Der Lee | EF Education-EasyPost | s.t. |
| 114 | Cyril Barthe | Groupama-FDJ United | 59:45 |
| 115 | Gijs Leemreize | Team Picnic PostNL | 1:00:29 |
| 116 | David González | Pinarello-Q36.5 Pro Cycling Team | 1:00:45 |
| 117 | Sjoerd Bax | Pinarello-Q36.5 Pro Cycling Team | 1:01:23 |
| 118 | Connor Swift | Netcompany INEOS Cycling Team | 1:01:25 |
| 119 | Johan Jacobs | Groupama-FDJ United | 1:01:33 |
| 120 | Oliver Naesen | Decathlon CMA CGM Team | 1:01:43 |
| 121 | Fran Miholjevic | Bahrain Victorious | 1:01:46 |
| 122 | Chris Hamilton | Team Picnic PostNL | 1:02:12 |
| 123 | Davide Ballerini | XDS Astana Team | 1:02:16 |
| 124 | Timo Kielich | Team Visma | Lease a Bike | 1:02:55 |
| 125 | Jonas Rutsch | Lotto-Intermarché | 1:03:04 |
| 126 | Markus Hoelgaard | Uno-X Mobility | 1:04:08 |
| 127 | Fabio Christen | Pinarello-Q36.5 Pro Cycling Team | 1:04:14 |
| 128 | Tim Rex | Team Visma | Lease a Bike | 1:04:38 |
| 129 | Jonas Geens | Alpecin-Premier Tech | 1:05:09 |
| 130 | Edward Planckaert | Alpecin-Premier Tech | 1:06:23 |
| 131 | Ayco Bastiaens | Soudal Quick-Step | 1:06:34 |
| 132 | Niklas Larsen | Unibet Rose Rockets | 1:06:47 |
| 133 | Jensen Plowright | Alpecin-Premier Tech | 1:07:26 |
| 134 | Luca Vergallito | Alpecin-Premier Tech | 1:07:51 |
| 135 | Martin Marcellusi | Bardiani-CSF 7 Saber | 1:08:11 |
| 136 | Jonathan Milan | Lidl-Trek | 1:08:19 |
| 137 | Tim Torn Teutenberg | Lidl-Trek | 1:08:53 |
| 138 | Paul Penhoët | Groupama-FDJ United | 1:09:23 |
| 139 | Lukas Kubis | Unibet Rose Rockets | 1:10:10 |
| 140 | Mattia Bais | Team Polti-VisitMalta | 1:11:01 |
| 141 | Koller Løland Sakarias | Uno-X Mobility | 1:12:24 |
| 142 | António Morgado | UAE Team Emirates-XRG | 1:14:42 |
| 143 | Tim Naberman | Team Picnic PostNL | 1:14:43 |
| 144 | Dries van Gestel | Soudal Quick-Step | 1:15:31 |
| 145 | Casper van Uden | Team Picnic PostNL | 1:15:43 |
| 146 | Nico Denz | Red Bull-BORA-hansgrohe | 1:16:24 |
| 147 | Tord Gudmestad | Decathlon CMA CGM Team | 1:16:26 |
| 148 | Dion Smith | NSN Cycling Team | 1:16:34 |
| 149 | Amanuel Ghebreigzabhier | Lidl-Trek | 1:16:58 |
| 150 | Enrico Zanoncello | Bardiani-CSF 7 Saber | 1:17:23 |
| 151 | Giovanni Lonardi | Team Polti-VisitMalta | 1:17:44 |
| 152 | Jake Stewart | NSN Cycling Team | 1:17:52 |
| 153 | Matyas Kopecky | Unibet Rose Rockets | 1:19:07 |
| 154 | Tomas Kopecky | Unibet Rose Rockets | s.t. |
| 155 | Ryan Mullen | NSN Cycling Team | 1:20:18 |
| 156 | Fabian Lienhard | Tudor Pro Cycling Team | 1:21:08 |
| 157 | Simone Consonni | Lidl-Trek | 1:21:49 |
| 158 | Luca Mozzato | Tudor Pro Cycling Team | 1:22:32 |
| 159 | Sean Flynn | Team Picnic PostNL | 1:23:09 |
| 160 | Dylan Groenewegen | Unibet Rose Rockets | 1:23:38 |
| 161 | Elmar Reinders | Unibet Rose Rockets | 1:23:42 |
| 162 | Hartthijs de Vries | Unibet Rose Rockets | 1:23:49 |
| 163 | Max Walscheid | Lidl-Trek | 1:24:41 |
| 164 | Robin Froidevaux | Tudor Pro Cycling Team | 1:27:02 |
| 165 | Arjen Livyns | XDS Astana Team | 1:27:51 |
| 166 | Johan Price-Pejtersen | Alpecin-Premier Tech | 1:28:03 |
| 167 | Erlend Blikra | Uno-X Mobility | 1:28:39 |
| 168 | Matteo Malucelli | XDS Astana Team | 1:29:05 |
| 169 | Frank van den Broek | Team Picnic PostNL | 1:39:51 |
Stage 7 map & profile:

Stage 7 map

Stage 7 profile
Stage seven photos by Fotoreporter Sirotti:

Jonas Vingegaard is interviewed before the race.

The peloton before the steep hills.

A shot of the back of the peloton with the train of following team cars.

Jonas Vingegaard takes a brilliant solo win at the legendary Blockhaus summit.

Felix Gall finished second 13 seconds later.

Third-place finisher Jai Hindley

Ben O'Connor finished fifth.

GC leader Afonso Eulalio just after finishing the stage.

Stage winner Jonas Vingegaard.

Afonso Eulalio will start stage eight in pink.