Tour de France - Stage 14 » Clermont-Ferrand › Lyon, 194km Tirreno-Adriatico - Stage 6 » Castelfidardo › Senigallia, 171km
The Colombian followed an acceleration from Julian Alaphilippe (Deceuninck-Quick-Step) on the run into Lyon, opening up a small gap on the Cote de la Croix-Rousse. Jumbo-Visma quickly shut down the move heading into the final kilometres, with Soren Kragh Andersen (Team Sunweb) putting in a well-timed attack to stay clear and win the stage.
With the peloton finishing 15 seconds later, Bernal retains third position, 59 seconds back ahead of Sunday's mountain test, culminating with a summit finish up the Grand Colombier.
The INEOS Grenadiers had arrived at the front late on during a technical finish, ensuring Bernal was well positioned.
The team hit the front to keep the Welshman well positioned, with Chris Froome and Filippo Ganna driving the pace in the final kilometres. Thomas remains third overall, 39 seconds back on leader Simon Yates (Mitchelton-Scott). Tim Merlier (Alpecin-Fenix) took the win of the day.
Sunday's stage looks set to be a relentless day of climbing, followed by Monday's final 10.1km time trial on the coast.
1. Primoz Roglic (Jumbo-Visma) 61:03:00
2. Tadej Pogacar (UAE Team Emirates) +44"
Overall standings Tirreno-Adriatico:
1. Simon Yates (Mitchelton-Scott) 27:36:29
2. Rafal Majka (Bora-Hansgrohe) +16"
3. Geraint Thomas (INEOS Grenadiers) +39"
4. Aleksandr Vlasov (Astana) +49"
5. Fausto Masnada (Deceuninck-Quick-Step) +54"