Davos - Spaniard Jon Izagirre won the stage eight time-trial and Miguel Angel Lopez of Colombia moved into the overall lead on a stunning day at the Tour of Switzerland on Saturday.
Both riders finished ahead of time-trial specialist Fabian Cancellara and overall victory favourites such as Tejay Van Garderen, Andrew Talansky and Geraint Thomas on the 16.8km race against the clock over rolling terrain in Davos.
What was most surprising is that neither are known as top time-triallers, although both have won relatively minor races against the clock in the past.
However, the lumpy nature of the course played into the two specialist climbers' hands.
Movistar's Izagirre won in a time of 21:31, with Astana's Lopez 18 seconds back and Swiss Cancellara of Trek third at 19 seconds.
"It was a really tough day, both due to the duration of the time-trial and how to manage it," said Izagirre.
"I gave everything and I'm delighted with the victory. It's a great day and a great season for me."
Previous leader Warren Barguil of France finished 57 seconds back and dropped to fourth overall in the race for the yellow jersey, at 18 seconds.
Lopez, 22, now leads by 8 seconds from American Talansky with Izagirre third at 16 seconds.
Thomas and Van Garderen, two of the favourites for overall victory before the race began a week ago, finished ninth and 10th on the stage at 33 seconds and 34 seconds respectively.
Thomas is now eighth overall at 1:30 with Van Garderen a place and four seconds better off.
Last year's winner Simon Spilak of Slovenia finished 22nd on the stage and is now ninth overall, a second behind Thomas.
Sunday's final stage is a mountainous 117.7km trek with two hors category climbs in which further changes could happen in a race that has seen the yellow jersey change hands almost every day.
Results from Saturday's 16.8km time-trial eighth stage of the Tour of Switzerland around Davos:
1. Jon Izagirre (ESP/MOV) 21min 31sec, 2. Miguel Angel Lopez (COL/AST) at 18sec, 3. Fabian Cancellara (SWI/TRE) 19, 4. Wilco Kelderman (NED/LNL) 21, 5. Andrew Talansky (USA/CAN) 23, 6. Jonathan Castroviejo (ESP/MOV) 24, 7. Jarlinson Pantano (COL/IAM) 25, 8. Michael Matthews (AUS/ORI) 25, 9. Geraint Thomas (GBR/SKY) 33, 10. Tejay Van Garderen (USA/BMC) 34
Selected others
19. Rui Costa (POR/LAM) 53, 21. Warren Barguil (FRA/GIA) 57, 22. Simon Spilak (SLO/KAT) 1:03
Overall standings
1. Miguel Angel Lopez (COL/AST) 29hr 32min 03sec, 2. Andrew Talansky (USA/CAN) at 8sec, 3. Jon Izagirre (ESP/MOV) 16, 4. Warren Barguil (FRA/GIA) 18, 5. Jarlinson Pantano (COL/IAM) 52, 6. Wilco Kelderman (NED/LNL) 1:21, 7. Tejay Van Garderen (USA/BMC) 1:26, 8. Geraint Thomas (GBR/SKY) 1:30, 9. Simon Spilak (SLO/KAT) 1:31, 10. Rui Costa (POR/LAM) 2:09