Po raz kolejny w tegorocznym wyścigu do głosu doszli uciekinierzy i po raz kolejny dopięli swego. Po długiej ucieczce, którą peleton odpuścił na kilkanaście minut, piątka kolarzy wysforowała się na czoło, by walczyć o zwycięstwo etapowe. Z kilkunastoosobowej grupy, która odjechała od peletonu chwilę po starcie z Mondonedo, gdy kolarze pokonywali Alto de Cadeira, została piątka na ostatnich, pagórkowatych kilometrach. Najczujniejsi byli Geniez, Victor Campenaerts (Lotto Soudal), Mark Padun (Bahrain-Merida), Dylan van Baarle (Team Sky) i Dylan Teuns (BMC Racing Team) i to oni stoczyli pojedynek na finiszu. Wiodący lekko w dół ostatni fragment wykorzystał Geniez, który rozpędzony ruszył do przodu i na wąskiej drodze nie dał się już wyprzedzić rywalom. Za nim finiszowali van Baarle i Padun.
Peleton na metę przyjechał z dużą stratą – ekipa lidera, Mitchelton-Scott, nie broniła koszulki Simona Yatesa i odpuściła ten odjazd, by na mecie zameldować się prawie 12 minut za czołówką i dziewięć za Herradą, który wobec wcześniejszej, prawie sześciominutowej straty, objął teraz prowadzenie w wyścigu. Hiszpan z Cofidisu wyprzedza o 3.22 Yatesa. Michał Kwiatkowski (Team Sky) jest 17., a Rafał Majka (Bora-hansgrohe) 24.
Wyniki 12. etapu:
1 Alexandre Geniez (Fra) AG2R La Mondiale 4:22:59
2 Dylan van Baarle (Ned) Team Sky
3 Mark Padun (Ukr) Bahrain-Merida
4 Dylan Teuns (Bel) BMC Racing Team
5 Victor Campenaerts (Bel) Lotto Soudal 0:00:02
6 Davide Formolo (Ita) Bora-Hansgrohe 0:00:05
7 Gianluca Brambilla (Ita) Trek-Segafredo 0:00:24
8 Dries Devenyns (Bel) Quick-Step Floors 0:00:48
9 Thomas De Gendt (Bel) Lotto Soudal 0:02:27
10 Valerio Conti (Ita) UAE Team Emirates 0:02:29
Klasyfikacja generalna po 12. etapie:
1 Jesus Herrada (Spa) Cofidis, Solutions Credits 50:28:56
2 Simon Yates (GBr) Mitchelton-Scott 0:03:22
3 Alejandro Valverde (Spa) Movistar Team 0:03:23
4 Nairo Quintana (Col) Movistar Team 0:03:36
5 Ion Izagirre (Spa) Bahrain-Merida 0:03:39
6 Tony Gallopin (Fra) AG2R La Mondiale 0:03:46
7 Emanuel Buchmann (Ger) Bora-Hansgrohe
8 Miguel Angel Lopez (Col) Astana Pro Team 0:03:49
9 Rigoberto Uran (Col) EF Education First-Drapac p/b Cannondale 0:03:54
10 Steven Kruijswijk (Ned) LottoNL-Jumbo 0:04:05