Tour de France stage 8: Jonathan Milan holds off Wout van Aert to win Laval sprint
Kaden Groves third as Lidl-Trek rider carries green jersey to his first Tour victory

A pan-flat day at the Tour de France delivered the expected as Jonathan Milan (Lidl-Trek) led the peloton home in a mass sprint to win stage 8 in Laval.
The Italian Tour debutant powered to the front off the back of a Mathieu van der Poel (Alpecin-Deceuninck) lead out to take his first stage win at the race and launch himself back into the green jersey points lead.
Milan beat Wout van Aert (Visma-Lease a Bike) at the end of a rising road to the finish at the end of the 171.4km stage. The Belgian was stuck in the wheel without the power to challenge, while behind the pair, Kaden Groves (Alpecin-Deceuninck) took third.
The battle for the win – and those precious 50 points towards the green jersey – came at the end of a subdued four-hour stage which saw Intermarché-Wanty control for the most part, a brief burst of action at the intermediate sprint, with Milan once again the quickest, and a half-stage breakaway from two TotalEnergies riders.
In the end, the day was always fated to end with the sprinters battling it out, and there would be no matching Milan’s pure power on the uphill run towards the line.
“I think I still don’t understand what we did. We came with some expectations and dreams to bring home. Then to predict it and bring them home are two different things,” Milan said after his win.
“I was confident with the team. We were really close in the last stage, not in the first one, but in the third one we were pretty close but went a bit too early.
“Today we were really focussed and really believing in it. Our guys did an amazing job until the final. It was a really tough final and a bit stressful. I wasn’t expecting it to drag up so much. I knew I had to wait as long as I could, but I like this kind of final. I’m really happy about the work we did; we really deserve it.”
Milan’s 23rd career victory now puts him in the driving seat for the points classification. He was already in the green jersey despite holding second behind race leader Tadej Pogačar (UAE Team Emirates-XRG), but now, he has fully taken control at the top of the standings.
He now tops the leaderboard with 192 points to Pogačar’s 156. Defending points champion Biniam Girmay (Intermarché-Wanty) lies third at 124 points.
"Winning with this jersey on the shoulders, it means a lot for me and also my country. I'm really happy to do the result and I will try to bring others home of course," Milan said about being the first Italian to win a stage of the Tour since 2019.
How it unfolded
Stage 8 of the Tour de France kicked off a weekend double header of… sprint stages? The 171.4km run from Saint-Méen-le-Grand to Laval hardly promised a thrilling start to the weekend, with a pan-flat profile only interrupted by the single fourth-category climb of the Côte de Nuillé-sur-Vicoin (900m at 3.8%) 16km from the line.
If fans were hardly salivating at the stage, then the riders clearly weren’t either. As with the unrelentingly dull stage 3 to Dunkerque, a day only livened up by Jasper Philipsen (Alpecin-Deceuninck) crashing out of the race, nobody fancied attacking out into the breakaway.
Thus followed a long slog towards the day’s intermediate sprint, coming at Vitré after 85.5km, with the peloton led by Intermarché-Wanty on behalf of defending green jersey champion Girmay.
With the previous two hours of the Tour written off as something we’d all rather forget, the Belgian squad led it out into Vitré, ready for Saturday’s first glimpse of action.
Of course, the intermediate sprint with its 20 points on offer, was hardly as hotly-contested a stage finish, with Milan jumping on the Intermarché-Wanty train, launching first, and duly crossing the line first with Tim Merlier, Anthony Turgis, and Girmay trailing in his wake.
At 80km to go, TotalEnergies sent a couple of men up the road as Mathieu Burgaudeau and Mattéo Vercher attacked. It was a fruitless move, but one which would at least liven the day.
The two Frenchman weren’t allowed more than a minute by the peloton, with their advantage limited by the sprint teams leading the way behind.
A crash in the peloton saw Marc Soler (UAE Team Emirates-XRG) go down at 47km to go, but there was precious little else to talk about on the run towards Laval. Heading into the final 25km of the stage, Burgaudeau and Vercher enjoyed a 50-second lead over the chasing pack, but the race behind was sure to speed up as they neared the finish town.
A nasty-looking crash took Jonas Rutsch (Intermarché-Wanty) out of action with 19km to go, while up front, Burgaudeau led Vercher over the top of the Côte de Nuillé-sur-Vicoin for the day’s sole mountain point.
They hit the final 15km with a 40-second lead, with Burgaudeau swiftly being awarded the day’s combativity prize. He launched off the front into the final 12.5km, with Vercher having done his job. Back in the peloton Tim Merlier was chasing on after an untimely mechanical.
At the 10km mark, just as the European champion was getting back on, another rider was added to the peloton in the form of Burgaudeau, who was reabsorbed after his half-day breakaway.
Thereafter, a host of the usual suspects – Alpecin-Deceuninck, Lidl-Trek, Intermarché-Wanty, Visma-Lease A Bike, and Soudal-QuickStep – flowed to the front to set up the big sprint finish everyone had waited for all day.
Bahrain Victorious and Lidl-Trek led it into the final 2km, but it was the US team with the numbers for their man Jonathan Milan. Van der Poel hit the wind under the flamme rouge, while Tudor Pro Cycling and then Groupama-FDJ tried to swamp the front shortly afterwards.
Before the sprint was launched, Van der Poel came back to the front, putting in one last burst of power to deliver Groves to the line. The Australian didn’t have the legs of Milan, however, with the 24-year-old from Tolmezzo easily overpowering his rivals to take his seventh win of 2025.
Results
Results powered by FirstCycling
The Tour de France is the biggest race in cycling, and a Cyclingnews subscription offers you unlimited access to our unrivalled coverage. Get all the breaking news and analysis from our team on the ground in France, plus the latest pro tech, live race reports, and a daily subscriber-only newsletter with exclusive insight into the action. Find out more.
The latest race content, interviews, features, reviews and expert buying guides, direct to your inbox!

Dani Ostanek is Senior News Writer at Cyclingnews, having joined in 2017 as a freelance contributor and later being hired full-time. Before joining the team, she had written for numerous major publications in the cycling world, including CyclingWeekly and Rouleur. She writes and edits at Cyclingnews as well as running newsletter, social media, and how to watch campaigns.
You must confirm your public display name before commenting
Please logout and then login again, you will then be prompted to enter your display name.
Latest on Cyclingnews
-
How to watch the Tour de France 2025: TV, Streaming, official broadcasters
Where to watch the biggest race in the world this July -
Tour de France 2025: All the yellow cards, fines, and penalties
Yellow cards abound on stage 3, Evenepoel hit with fine on stage 4, Milan gets fine after win on stage 8 -
On the eighth day, the Tour de France rested - Why the peloton rode steady on the road to Laval
'It was quite an easy day, I think a lot of guys in the bunch' says Jonas Vingegaard -
Giro d'Italia Women abandons: All of the riders who have left the 2025 race so far
Marianne Vos among three riders not starting stage 7, the Dutch rider feeling unwell