Mit Christophe Laporte (Visma-Lease a Bike) ging ein Fahrer nicht an den Start der 8. Etappe. Unmittelbar nachdem das Rennen freigegeben worden war, kam es in der ersten nicht-kategorisierten Steigung zu den ersten Angriffen, wodurch bereits früh die ersten Fahrer den Anschluss zum Peloton verloren. Die Fluchtgruppe bildete sich schließlich im Anstieg des Forca Capistrello nach rund 30 Kilometern. In der Gruppe befanden sich folgende Teams (geordnet nach dem bestplatzierten Fahrer in der Gesamtklassement): Romain Bardet (dsm-firmenich PostNL), Georg Steinhauser (EF Education-EasyPost), Michael Storer (Tudor), Jhonatan Narváez, Magnus Sheffield (beide Ineos Grenadiers), Julian Alaphilippe (Soudal Quick-Step), Simon Geschke (Cofidis), Nairo Quintana, Pelayo Sánchez (beide Movistar), Valentin Paret-Peintre (Decathlon AG2R La Mondiale), Alessandro Verre (Arkéa-B&B Hotels), Henok Mulubrhan (Astana Qazaqstan), Alessandro De Marchi (Jayco AlUla) und Martin Marcellusi (VF Group-Bardiani CSF-Faizanè). Romain Bardet wies als bestplatzierter Fahrer einen Rückstand von fünf Minuten und 23 Sekunden auf Tadej Pogačar (UAE Team Emirates) auf.
Noch in der Auffahrt des Forca Capistrello teilte sich die Spitzengruppe erneut, fand sich wenige Kilometer später jedoch wieder zusammen. Die meisten Punkte bei der Bergwertung holte Simon Geschke vor Georg Steinhauser und Romain Bardet. Beim ersten Zwischensprint in Leonessa setzte sich Martin Marcellusi vor Jhonathan Narvaez und Michael Storer durch. Alle drei stellten jedoch keine Gefahr für Jonathan Milan (Lidl-Trek) dar, der das Maglia Ciclamino trug. Beim zweiten Zwischensprint betrug der Vorsprung der Ausreißer rund 45 Kilometer vor dem Ziel nur noch etwas mehr als eine Minute, nachdem er zuvor maximal bei rund drei Minuten gelegen hatte. Nachdem sich Romain Bardet vor Georg Steinhauser und Magnus Sheffield die meisten Bonifikationssekunden gesichert hatte, griff der zweitgenannte im Anstieg des Croce Abbio an, konnte sich jedoch nicht entscheidend absetzen. Die Ausreißergruppe überquerte die Bergwertung geschlossen, wobei sich Simon Geschke erneut die meisten Punkte sicherte und so auf den zweiten Gesamtrang der Sonderwertung vorrückte.
Am Fuße des Schlussanstiegs nach Prati di Tivo betrug der Vorsprung der Ausreißergruppe nur noch etwas mehr als 30 Sekunden. Kurz darauf zerfiel die Gruppe, ehe sich Valentin Paret-Peintre rund 10 Kilometer vor dem Ziel von seinen verbliebenen Begleitern absetzen konnte. Der Franzose hielt im Anschluss seinen Vorsprung von wenigen Sekunden und sicherte sich beim letzten Zwischensprint in Pietracamela drei Bonussekunden. Die weiteren Zeitbonifikationen gingen an Felix Großschartner und Rafał Majka (beide UAE Team Emirates), die als Helfer von Tadej Pogačar die Tempoarbeit übernommen hatten. Bereits zu Beginn des Anstiegs war mit Lucas Plapp (Jayco AlUla) der Führende in der Nachwuchswertung zurückgefallen und auch Juan Pedro López (Lidl-Trek) und Alexei Luzenko (Astana Qazaqstan) mussten die anderen Gesamtklassement-Fahrer früh ziehen lassen. Vier Kilometer vor dem Ziel wurde Valentin Paret-Peintre als letzter Ausreißer eingeholt. Auf den letzten Kilometern griff Antonio Tiberi (Bahrain Victorious) zweimal an, konnte sich jedoch nicht absetzen. Im Zielsprint einer sieben Fahrer umfassenden Gruppe setzte sich Tadej Pogačar vor Daniel Felipe Martínez (Bora-hansgrohe) und Ben O’Connor (Decathlon AG2R La Mondiale) durch. Mit einer kleinen Lücke von zwei Sekunden folgten Antonio Tiberi, Geraint Thomas (Ineos Greandiers), Einer Rubio (Movistar) und Cian Uijtdebroeks (Visma-Lease a Bike). Dahinter überquerten Thymen Arensman (Ineos Grenadiers) und Michael Storer, der in der Ausreißergruppe gewesen war, den Zielstrich mit Rückständen von etwas mehr als zehn Sekunden. Der Verlierer des Tages war der Kasache Alexei Luzenko, der zwei Minuten und 21 Sekunden einbüßte und aus den Top 10 der Gesamtwertung fiel.
In der Gesamtwertung baute Tadej Pogačar seinen Vorsprung aufgrund der Zeitbonifikationen auf zwei Minuten und 40 Sekunden aus. Daniel Felipe Martínez lag weiterhin auf dem zweiten Gesamtrang, wobei sein Vorsprung auf Geraint Thomas auf 18 Sekunden anwuchs. Hinter Ben O’Connor folgte Cian Uijtdebroeks, der das Weiße Trikot nach nur einem Tag von Lucas Plapp zurückeroberte. Der Rückstand des Belgiers auf den Gesamtführenden betrug jedoch bereits vier Minuten und zwei Sekunden. Auf den weiteren plätzen folgten Antonio Tiberi, Lorenzo Fortunato (Astana Qazaqstan), Einer Rubio, Thymen Arensman und Jan Hirt (Soudal Quick-Step), während Lucas Plapp, Alexei Luzenko und Filippo Zana (Jayco AlUla) aus den Top-10 fielen. Neben der Gesamtführung baute Tadej Pogačar auch in der Bergwertung seinen Vorsprung weiter aus und lag nun 52 Punkte vor Daniel Felipe Martínez. Jonathan Milan erreichte das Ziel in der vorgegebenen Karenzzeit und behielt so die Führung in der Punktewertung. In der Mannschaftswertung setzte sich das französische Decathlon AG2R La Mondiale Team an die Spitze. Nach dem Ausscheiden von Christophe Laporte verblieben noch 164 Fahrer im Rennen.[2][3]