
Sunday, May 17: Stage 9, Cervia - Corno alle Scale, 184 km
Stage 9 map & profile | Stage 9 photos

Jonas Vingegaard solos across the finish line to win the stage. La Presse photo
Les Woodland's book Paris-Roubaix: The Inside Story - All the bumps of cycling's cobbled classic is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the town of Querciola, on the route, 17 km from the finish at 2:30 PM, local time: 21C (69F), fair, with the wind from the west-southwest at 10 km/hr (6 mph). There is just a 6% chance of rain.
The stage: This stage is essentially one long climb. The route is completely flat from the start to Silla, although after Sasso Marconi it begins to rise slightly along the Porrettana road. At Silla, the first KOM climb begins (effectively forming a single ascent with the final climb, separated only by a very short descent). The route passes through Gaggio Montano via the steepest approach to reach Querceta. A short descent leads to Villaggio Europa (Lizzano in Belvedere), followed by the final climb.
Final kilometers
The last 12 km are all uphill on a mountain road with numerous bends and some hairpins. In the final 3 km, gradients remain above 10%, with peaks up to 15%, before easing slightly. Final straight (asphalt, 150 m long, 7 m wide) at around 7%.
The race: Here's the report from stage winner Jonas Vingegaard's Team Visma | Lease a Bike.
Jonas Vingegaard has claimed victory in the ninth stage of the Giro d’Italia. The 29-year-old Dane from Team Visma | Lease a Bike proved to be the strongest on the challenging final climb to Corno alle Scale. It marks the fiftieth professional victory for Vingegaard, who thereby closes the gap in the general classification.

It's on! Stage nine gets its official start.
“This stage win wasn't initially a goal for us, but I am very happy that I could deliver the victory for the team,” Vingegaard reflects. “We chose to wait and see during the opening phase. We noticed that other teams wanted to take the initiative, which suddenly brought the stage win within reach. On the final climb, we decided to go all out for it. Gall launched a strong acceleration in the closing moments, but I felt strong today.”

The peloton rolls through the start city of Cervia. Photo: MirrorMedia / LaPresse / Tony Esnault
The Giro peloton faced a tough challenge one day before the rest day. The finish of the ninth stage was at the top of Corno alle Scale, an 11-kilometer climb. The stage featured a long flat approach before the riders reached the mountains. Eight riders formed the break of the day, but the peloton kept them within range.
The gap to the leaders quickly shrank on the final climb. In a strongly reduced peloton, the riders of Team Visma | Lease a Bike made an impression. The first move among the favorites came from Felix Gall. Vingegaard was the only rider able to follow the Austrian’s pace. The two then went past the last remaining breakaway rider, Giulio Ciccone.

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

Stage 9 map

Stage 9 profile
Stage nine photos by Fotoreporter Sirotti:

More than a few people at the start.

The peloton gets rolling in the start city of Cervia.

Stage winner Jonas Vingegaard picked his moment and left everyone else behind. Again.

Second-place Felix Gall came across the line 12 seconds after winner Vingegaard.

Third-place Davide Piganzoli leads fourth-place Thymen Arensman across the line.

Afonso Eulalio finished fifth in the stage, good enough to keep him in pink for another day.

Derek Gee-West was sixth. Mathys Rondel in the black Tudor kit was seventh.

Sepp Kuss finishes eighth.

Ninth-place Jai Hindley leads tenth-place Michael Storer across the line.

Stage winner and mountains classification leader (hence the blue jersey) Jonas Vingegaard.

Gc leader Afonso Eulalio will start stage 10 on Tuesday in pink.