The 27-year-old Groupama-FDJ rider completed the 145km flat stage, which kicked off in Ravenna, in a time of 3:36:07.
Elia Viviani (Deceuninck-QuickStep) and Rüdiger Selig (Bora-Hansgrohe) finished in second and third respectively.
Caleb Ewan (Lotto Soudal) claimed fourth place, with Giacomo Nizzolo (Dimension Data) completing the top five.
“It’s been a tough time for Arnaud, he’s our leader and there’s a lot of pressure on him,” said the stage winner’s teammate Miles Scotson.
“After the last sprint stages we had, the mood was pretty low on the bus and we were all pretty tired from the effort and we did a lot of work and it wasn’t coming off. Today we thought do we even ride from the beginning and finally he delivered.”
Valerio Conti (UAE Team Emirates) managed to hold on to the pink jersey and was joined on the podium by Nans Peters (AG2R La Mondiale) in second and Primoz Roglic (Team Jumbo-Visma) third.
View more results below.
Stage 10 results
1. Arnaud Demare (Fra) Groupama-FDJ 3:36:07
2. Elia Viviani (Ita) Deceuninck-QuickStep
3. Rüdiger Selig (Ger) Bora-Hansgrohe
4. Caleb Ewan (Aus) Lotto Soudal
5. Giacomo Nizzolo (Ita) Dimension Data
6. Davide Cimolai (Ita) Israel Cycling Academy
7. Manuel Belletti (Ita) Androni Giocattoli-Sidermec
8. Giovanni Lonardi (Ita) Nippo-Vini Fantini-Faizane
9. Jasper De Buyst (Bel) Lotto Soudal +0:00:02
10. Jacopo Guarnieri (Ita) Groupama-FDJ +0:00:04
136. Ryan Gibbons (RSA) Dimension Data +0:02:10
1. Valerio Conti (Ita) UAE Team Emirates 39:45:10
2. Nans Peters (Fra) AG2R La Mondiale +0:01:50
3. Primoz Roglic (Slo) Team Jumbo-Visma
4. José Rojas (Spa) Movistar Team +0:02:33
5. Amaro Antunes (Por) CCC Team +0:02:34
6. Fausto Masnada (Ita) Androni Giocattoli-Sidermec +0:02:36
7. Andrey Amador (CRc) Movistar Team +0:02:39
8. Valentin Madouas (Fra) Groupama-FDJ +0:03:27
9. Giovanni Carboni (Ita) Bardiani CSF +0:03:30
10. Pello Bilbao (Spa) Astana Pro Team +0:03:32
59. Ryan Gibbons (RSA) Dimension Data +0:17:50