
Milano-Torino podium history | 2025 edition | Course map & profile | Photos | Start list
Milano (Rho) - Torino (Superga), 174 km
Tom Pidcock wins the oldest bicycle race in the world. Photo: La Presse
Les Woodland's book The Olympics' 50 Craziest Stories: A Five Ring Circus is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the finish city of Torino at 1:45 PM, local time: 11C (52F), partly cloudy, with the wind from the northwest at 11 km/hr (7 mph). There is an 18% chance of rain.
The race: Adne Holter (Uno-X Mobility), Matteo Turconi (Bardiani CSF 7 Saber) & Paul Ourselin (Cofidis) did not start.
Here's the organizer's race summary:
A single move, sharp, decisive, irresistible. That’s how Tom Pidcock won Milano Torino 2026, the edition celebrating 150 years of the oldest race in the world. The versatile rider from Q36.5 Pro Cycling Team launched his acceleration with 500 metres to go, leaving Tobias Halland Johannessen (Uno X Mobility) and Primož Roglič (Red Bull Bora hansgrohe) to settle for second and third place.
The first hour of racing flew by at an average of over 52.6 km/h, before the breakaway finally went clear. Alessandro Milesi (Biesse Carrera Premac), Valentin Ferron (Cofidis), Patrick Konrad (Lidl Trek), Andrea Pietrobon (Polti VisitMalta), Mathieu Burgaudeau (TotalEnergies) and Adrien Maire (Unibet Tietema Rockets) built a lead of up to 1’40” over the peloton.
Their move came to an end on the first ascent of the Colle di Superga (4.9 km at 9.1%), with Pietrobon the last to hold on. Red Bull Bora hansgrohe had other plans, and with a couple of kilometres to the summit, Primož Roglič launched a surprise move, taking with him Jefferson Cepeda (EF Education EasyPost), Cian Uijtdebroeks (Movistar) and Pidcock. Over the top and on the descent, a front group of around a dozen riders formed, including Jan Christen (UAE Team Emirates XRG), Alex Baudin (EF Education EasyPost), Cepeda, Carlos Verona (Lidl Trek), Simone Gualdi (Lotto Intermarché), Uijtdebroeks, Pidcock, Giulio Pellizzari, Adrien Boichis, Roglič, Johannessen and Lorenzo Fortunato (XDS Astana).
Red Bull then sent the young Boichis up the road, and he started the second and final ascent of Superga with a small advantage over a much larger chasing group. Movistar closed the gap and launched Uijtdebroeks, with Roglič, Pidcock, Cepeda and Johannessen responding first, followed shortly after by Pellizzari, Fortunato and Jai Berwick.
No one managed to get clear, so the race entered the final kilometre stretched out but still together. Roglič made the first move, but Pidcock had timed his effort perfectly and, at 500 metres to go, delivered the decisive blow. For the Olympic cross-country champion, it is his second victory in Italy after Strade Bianche 2023. He clearly knows exactly when to strike.
Speaking seconds after the finish, Thomas Pidcock said: “It was a weird day. It felt almost like the first race of the season. I felt the accelerations in the legs all day. Luckily in the end I had what I needed for winning. Primoz [Roglic] is hard to read. He’s on the saddle all the time. I was expecting him to be good there. I hesitated to attack but eventually I did and the timing was right. A win is a win. No win is easy to come by so it’s nice to get this one”.
Complete results:
174 kilometers raced at an average speed of 45.639 km/hr
| 1 | Tom Pidcock | Pinarello-Q36.5 Pro Cycling Team | 3hr 48min 45sec |
| 2 | Tobias Halland Johannessen | Uno-X Mobility | @ 4sec |
| 3 | Primoz Roglic | Red Bull-BORA-hansgrohe | 0:05 |
| 4 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 0:11 |
| 5 | Cian Uijtdebroeks | Movistar Team | 0:13 |
| 6 | Alexander Cepeda | EF Education-EasyPost | 0:15 |
| 7 | Sebastian Berwick | Caja Rural-Seguros RGA | 0:18 |
| 8 | Lorenzo Fortunato | XDS Astana Team | 0:25 |
| 9 | Alessandro Fancellu | MBH Bank CSB Telecom Fort | 0:36 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 0:41 |
| 11 | Jan Christen | UAE Team Emirates-XRG | 0:44 |
| 12 | Wout Poels | Unibet Rose Rockets | 0:50 |
| 13 | Diego Ulissi | XDS Astana Team | s.t. |
| 14 | Kevin Vermaerke | UAE Team Emirates-XRG | s.t. |
| 15 | Markel Beloki | EF Education-EasyPost | s.t. |
| 16 | Jan Castellon | Caja Rural-Seguros RGA | 0:53 |
| 17 | Carlos Verona | Lidl-Trek | s.t. |
| 18 | Jefferson Cepeda | Movistar Team | s.t. |
| 19 | Jardi Van Der Lee | EF Education-EasyPost | 0:58 |
| 20 | Nicolo Garibbo | Team UKYO | s.t. |
| 21 | José Félix Parra | Caja Rural-Seguros RGA | 0:59 |
| 22 | Simone Gualdi | Lotto-Intermarché | 1:01 |
| 23 | Tao Geoghegan Hart | Lidl-Trek | 1:03 |
| 24 | Sylvain Moniquet | Cofidis | 1:05 |
| 25 | Jannis Peter | Unibet Rose Rockets | s.t. |
| 26 | Thomas Pesenti | Team Polti-VisitMalta | s.t. |
| 27 | Diego Pescador | Movistar Team | s.t. |
| 28 | Paul Double | Team Jayco-AlUla | 1:09 |
| 29 | Einer Rubio | Movistar Team | 1:16 |
| 30 | Abel Balderstone | Caja Rural-Seguros RGA | 1:19 |
| 31 | Yaël Joalland | Cofidis | s.t. |
| 32 | Filippo Turconi | Bardiani-CSF 7 Saber | 1:35 |
| 33 | Sam Oomen | Lidl-Trek | s.t. |
| 34 | Alex Baudin | EF Education-EasyPost | s.t. |
| 35 | Julen Arriola-Bengoa | Caja Rural-Seguros RGA | 1:41 |
| 36 | Natnael Tesfazion | Movistar Team | 1:44 |
| 37 | Florian Stork | Tudor Pro Cycling Team | 1:45 |
| 38 | Lorenzo Nespoli | MBH Bank CSB Telecom Fort | s.t. |
| 39 | Jamie Meehan | Cofidis | 1:52 |
| 40 | Adrien Boichis | Red Bull-BORA-hansgrohe | 1:58 |
| 41 | Harry Sweeny | EF Education-EasyPost | 2:07 |
| 42 | Marcel Camprubí | Pinarello-Q36.5 Pro Cycling Team | 2:17 |
| 43 | Samuele Battistella | EF Education-EasyPost | 3:02 |
| 44 | Luca Paletti | Bardiani-CSF 7 Saber | s.t. |
| 45 | Felix Engelhardt | Team Jayco-AlUla | s.t. |
| 46 | Alex Tolio | Bardiani-CSF 7 Saber | s.t. |
| 47 | Manuele Tarozzi | Bardiani-CSF 7 Saber | s.t. |
| 48 | Reuben Thompson | Lotto-Intermarché | s.t. |
| 49 | Robin Donzé | Tudor Pro Cycling Team | s.t. |
| 50 | Luca Covili | Bardiani-CSF 7 Saber | s.t. |
| 51 | Alessandro Verre | MBH Bank CSB Telecom Fort | s.t. |
| 52 | Rudy Porter | Team Jayco-AlUla | s.t. |
| 53 | Dario Giuliano | Team Polti-VisitMalta | 3:08 |
| 54 | Colin Savioz | Unibet Rose Rockets | s.t. |
| 55 | Martín Herreño | Bardiani-CSF 7 Saber | s.t. |
| 56 | Nicola Zumsteg | Biesse-Carrera-Premac | 3:11 |
| 57 | Geoffrey Bouchard | Team TotalEnergies | 3:15 |
| 58 | Joris Delbove | Team TotalEnergies | 3:17 |
| 59 | Fernando Tercero | Team Polti-VisitMalta | 3:22 |
| 60 | Alexandre Balmer | Solution Tech-NIPPO-Rali | 3:25 |
| 61 | Lorenzo Masciarelli | MBH Bank CSB Telecom Fort | 3:29 |
| 62 | Eivind Broholt Fougner | Unibet Rose Rockets | 3:35 |
| 63 | Filip Gruszczynski | MBH Bank CSB Telecom Fort | 3:36 |
| 64 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | 3:40 |
| 65 | Lawrence Warbasse | Tudor Pro Cycling Team | 3:49 |
| 66 | Ludovico Crescioli | Team Polti-VisitMalta | 3:50 |
| 67 | Lorenzo Rota | Lotto-Intermarché | 4:01 |
| 68 | Diego Bracalente | MBH Bank CSB Telecom Fort | s.t. |
| 69 | Jonas Abrahamsen | Uno-X Mobility | 4:08 |
| 70 | Andrea Piras | Solution Tech-NIPPO-Rali | 4:12 |
| 71 | Eduard Prades | Caja Rural-Seguros RGA | s.t. |
| 72 | Nicholas Travella | Biesse-Carrera-Premac | 4:14 |
| 73 | Tommaso Dati | Team UKYO | 4:21 |
| 74 | Sergio Meris | Unibet Rose Rockets | 4:26 |
| 75 | Enea Sambinello | UAE Team Emirates-XRG | s.t. |
| 76 | Adria Pericas | UAE Team Emirates-XRG | s.t. |
| 77 | Jonas Rutsch | Lotto-Intermarché | s.t. |
| 78 | Théo Lévêque | Team TotalEnergies | s.t. |
| 79 | Magnus Cort | Uno-X Mobility | 4:29 |
| 80 | Nahom Zeray | Team UKYO | 4:45 |
| 81 | Federico Iacomoni | Team UKYO | 4:51 |
| 82 | Christian Bagatin | MBH Bank CSB Telecom Fort | s.t. |
| 83 | Fabien Doubey | Team TotalEnergies | s.t. |
| 84 | Alan Jousseaume | Team TotalEnergies | s.t. |
| 85 | Simone Zanini | XDS Astana Team | 5:02 |
| 86 | Santiago Umba | Solution Tech-NIPPO-Rali | s.t. |
| 87 | Roberto Capello | EF Education-EasyPost | 5:16 |
| 88 | Edoardo Zamperini | Cofidis | 5:48 |
| 89 | Frederik Wandahl | Red Bull-BORA-hansgrohe | 5:58 |
| 90 | Davide Ballerini | XDS Astana Team | 6:06 |
| 91 | Joan Bou | Caja Rural-Seguros RGA | 6:07 |
| 92 | Kamiel Eeman | Lotto-Intermarché | 6:36 |
| 93 | Adam Rafferty | Team Jayco-AlUla | s.t. |
| 94 | Luke Tuckwell | Red Bull-BORA-hansgrohe | 6:50 |
| 95 | Matvey Boldyrev | UAE Team Emirates-XRG | 6:55 |
| 96 | Cristian Sanfilippo | Biesse-Carrera-Premac | 6:56 |
| 97 | Andrea Pietrobon | Team Polti-VisitMalta | 6:59 |
| 98 | Marco Schrettl | XDS Astana Team | s.t. |
| 99 | Valentin Retailleau | Team TotalEnergies | 7:08 |
| 100 | Benoît Cosnefroy | UAE Team Emirates-XRG | s.t. |
| 101 | Mathieu Burgaudeau | Team TotalEnergies | s.t. |
| 102 | Patrick Konrad | Lidl-Trek | s.t. |
| 103 | Bauke Mollema | Lidl-Trek | s.t. |
| 104 | Matteo Badilatti | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 105 | Anders Halland Johannessen | Uno-X Mobility | 7:12 |
| 106 | Jacob Eriksson | Tudor Pro Cycling Team | 7:32 |
| 107 | Wil Holmes | Team Jayco-AlUla | 7:36 |
| 108 | Jacopo Mosca | Lidl-Trek | 7:44 |
| 109 | Damien Howson | Pinarello-Q36.5 Pro Cycling Team | 7:59 |
| 110 | Pablo Garcia | Team Polti-VisitMalta | 8:02 |
| 111 | Valentin Ferron | Cofidis | 8:13 |
| 112 | Paul Ourselin | Cofidis | s.t. |
| 113 | Daniele Forlin | Movistar Team | 8:25 |
| 114 | Matteo Turconi | Bardiani-CSF 7 Saber | s.t. |
| 115 | Derek Gee-West | Lidl-Trek | 8:28 |
| 116 | Owen Geleijn | Unibet Rose Rockets | s.t. |
| 117 | Anders Skaarseth | Uno-X Mobility | 8:31 |
| 118 | Manabu Ishibashi | Team UKYO | 8:32 |
| 119 | Harm Vanhoucke | Pinarello-Q36.5 Pro Cycling Team | 8:48 |
| 120 | Liam Slock | Lotto-Intermarché | 9:05 |
| 121 | Roland Thalmann | Tudor Pro Cycling Team | 9:23 |
| 122 | Adrien Maire | Unibet Rose Rockets | 9:34 |
| 123 | Filippo Conca | Team Jayco-AlUla | 9:38 |
| 124 | Genji Iwamura | Solution Tech-NIPPO-Rali | 9:38 |
| 125 | Felix Meo | Solution Tech-NIPPO-Rali | 10:49 |
| 126 | Mirko Carminati | Biesse-Carrera-Premac | 11:41 |
| 127 | Pietro Galbusera | XDS Astana Team | s.t. |
| 128 | Mattia Proietti Gagliardoni | Movistar Team | 11:45 |
| 129 | Alessandro Iacchi | Solution Tech-NIPPO-Rali | s.t. |
| 130 | Jin Soneda | Team UKYO | 13:15 |
| 131 | Asbjørn Hellemose | Team Jayco-AlUla | 16:42 |
| 132 | William Blume Levy | Uno-X Mobility | s.t. |
| 133 | Stefano Leali | Biesse-Carrera-Premac | s.t. |
| 134 | Renato Favero | Biesse-Carrera-Premac | s.t. |
| 135 | Alessandro Milesi | Biesse-Carrera-Premac | s.t. |
| 136 | Joel Suter | Tudor Pro Cycling Team | s.t. |
| 137 | Yato Watanabe | Team UKYO | 16:53 |
2026 Milano-Torino map & profile

2026 Milano-Torino map

2026 Milano-Torino profile
2026 Milano-Torino photos by Fotoreporter Sirotti:

Starting ceremonies, Primoz Roglic at the teams presentation.

Tom Pidcock

Team Lotto Intermarché

Sam Oomen gets his bike

The Unibet Rose Rockets get their machines.

About time to get this race on the road.

The race starts. The peloton gets rolling in the Milan suburb of Rho.

Tom Pidcock wins. Second-place Tobias Halland Johannessen & third-place Primoz Roglic can be seen behind him.

Giulio Pellizzari finishes fourth.

The podium, from left: Tobias Halland Johannessen (2nd), Tom Pidcock (1st), & Primoz Roglic (3rd).

Race winner Tom Pidcock
Start list with back numbers, March 17, 2026:
| UAE Team Emirates-XRG | |
| 1 | Jan Christen |
| 2 | Matvey Boldyrev |
| 3 | Benoît Cosnefroy |
| 5 | Adria Pericas |
| 6 | Enea Sambinello |
| 7 | Kevin Vermaerke |
| Bardiani-CSF 7 Saber | |
| 11 | Luca Covili |
| 12 | Martín Herreño |
| 13 | Luca Paletti |
| 14 | Manuele Tarozzi |
| 15 | Alex Tolio |
| 16 | Filippo Turconi |
| 17 | Matteo Turconi |
| Biesse-Carrera-Premac | |
| 21 | Mirko Carminati |
| 22 | Renato Favero |
| 23 | Stefano Leali |
| 24 | Alessandro Milesi |
| 25 | Cristian Sanfilippo |
| 26 | Nicholas Travella |
| 27 | Nicola Zumsteg |
| Caja Rural-Seguros RGA | |
| 31 | Julen Arriola-Bengoa |
| 32 | Abel Balderstone |
| 33 | Sebastian Berwick |
| 34 | Joan Bou |
| 35 | Jan Castellon |
| 36 | José Félix Parra |
| 37 | Eduard Prades |
| Cofidis | |
| 41 | Simon Carr |
| 42 | Valentin Ferron |
| 43 | Yaël Joalland |
| 44 | Jamie Meehan |
| 45 | Sylvain Moniquet |
| 46 | Paul Ourselin |
| 47 | Edoardo Zamperini |
| EF Education-EasyPost | |
| 51 | Harry Sweeny |
| 52 | Samuele Battistella |
| 53 | Alex Baudin |
| 54 | Markel Beloki |
| 55 | Alexander Cepeda |
| 56 | Jardi Van Der Lee |
| 57 | Roberto Capello |
| Lidl-Trek | |
| 61 | Tao Geoghegan Hart |
| 62 | Derek Gee-West |
| 63 | Patrick Konrad |
| 64 | Bauke Mollema |
| 65 | Jacopo Mosca |
| 66 | Sam Oomen |
| 67 | Carlos Verona |
| Lotto-Intermarché | |
| 72 | Kamiel Eeman |
| 73 | Simone Gualdi |
| 74 | Lorenzo Rota |
| 75 | Jonas Rutsch |
| 76 | Liam Slock |
| 77 | Reuben Thompson |
| MBH Bank CSB Telecom Fort | |
| 81 | Lorenzo Masciarelli |
| 82 | Diego Bracalente |
| 83 | Christian Bagatin |
| 84 | Alessandro Fancellu |
| 85 | Filip Gruszczynski |
| 86 | Lorenzo Nespoli |
| 87 | Alessandro Verre |
| Movistar Team | |
| 91 | Cian Uijtdebroeks |
| 92 | Jefferson Cepeda |
| 93 | Daniele Forlin |
| 94 | Diego Pescador |
| 95 | Mattia Proietti Gagliardoni |
| 96 | Einer Rubio |
| 97 | Natnael Tesfazion |
| Pinarello-Q36.5 Pro Cycling Team | |
| 101 | Tom Pidcock |
| 102 | Xabier Azparren |
| 103 | Matteo Badilatti |
| 104 | Walter Calzoni |
| 105 | Marcel Camprubí |
| 106 | Damien Howson |
| 107 | Harm Vanhoucke |
| Red Bull-BORA-hansgrohe | |
| 111 | Giulio Pellizzari |
| 112 | Adrien Boichis |
| 113 | Finn Fisher-Black |
| 114 | Primoz Roglic |
| 115 | Luke Tuckwell |
| 116 | Frederik Wandahl |
| 117 | Ben Zwiehoff |
| Solution Tech-NIPPO-Rali | |
| 121 | Alexandre Balmer |
| 122 | Matteo Fabbro |
| 123 | Alessandro Iacchi |
| 124 | Genji Iwamura |
| 125 | Andrea Piras |
| 126 | Santiago Umba |
| 127 | Felix Meo |
| Team Jayco-AlUla | |
| 131 | Filippo Conca |
| 132 | Paul Double |
| 133 | Felix Engelhardt |
| 134 | Asbjørn Hellemose |
| 135 | Wil Holmes |
| 136 | Rudy Porter |
| 137 | Adam Rafferty |
| Team Polti-VisitMalta | |
| 141 | Aidan Buttigieg |
| 142 | Ludovico Crescioli |
| 143 | Pablo Garcia |
| 144 | Dario Giuliano |
| 145 | Thomas Pesenti |
| 146 | Andrea Pietrobon |
| 147 | Fernando Tercero |
| Team UKYO | |
| 151 | Nicolo Garibbo |
| 152 | Nahom Zeray |
| 153 | Tommaso Dati |
| 154 | Federico Iacomoni |
| 155 | Manabu Ishibashi |
| 156 | Jin Soneda |
| 157 | Yato Watanabe |
| Team TotalEnergies | |
| 161 | Mathieu Burgaudeau |
| 162 | Geoffrey Bouchard |
| 163 | Joris Delbove |
| 164 | Fabien Doubey |
| 165 | Alan Jousseaume |
| 166 | Théo Lévêque |
| 167 | Valentin Retailleau |
| Tudor Pro Cycling Team | |
| 171 | Michael Storer |
| 172 | Robin Donzé |
| 173 | Jacob Eriksson |
| 174 | Florian Stork |
| 175 | Joel Suter |
| 176 | Roland Thalmann |
| 177 | Lawrence Warbasse |
| Unibet Rose Rockets | |
| 181 | Wout Poels |
| 182 | Colin Savioz |
| 183 | Eivind Broholt Fougner |
| 184 | Owen Geleijn |
| 185 | Adrien Maire |
| 186 | Sergio Meris |
| 187 | Jannis Peter |
| Uno-X Mobility | |
| 191 | Magnus Cort |
| 192 | Jonas Abrahamsen |
| 193 | Ådne Holter |
| 194 | Anders Halland Johannessen |
| 195 | Tobias Halland Johannessen |
| 196 | William Blume Levy |
| 197 | Anders Skaarseth |
| XDS Astana Team | |
| 201 | Alberto Bettiol |
| 202 | Davide Ballerini |
| 203 | Lorenzo Fortunato |
| 204 | Pietro Galbusera |
| 205 | Marco Schrettl |
| 206 | Diego Ulissi |
| 207 | Simone Zanini |