Jakob Fuglsang won the penultimate stage of the Tour of Romandie as overnight leader Primoz Roglic retained the leader's yellow jersey.
Denmark's Fuglsang, riding for Astana, broke clear of a five-man leading group for a solo victory by 48 seconds.
Lotto NL rider Roglic beat closest challenger Egan Bernal, riding for Team Sky, at the line to finish second and claim more bonus points.
Roglic, a former ski jumper, is looking for his first overall win in the race.
The Slovenian leads Bernal by eight seconds and Australian Richie Porte by 35 going into the final stage around Geneva on Sunday.
Tour of Romandie fourth stage result:
1. Jakob Fuglsang (Astana) 4hrs 18mins 48secs
2. Primoz Roglic (LottoNL-Jumbo) +48secs
3. Egan Bernal (Team Sky) same time
4. Rui Costa (UAE Team Emirates)
5. Richie Porte (BMC Racing Team) +50secs
Tour of Romandie overall standings:
1. Primoz Roglic (LottoNL-Jumbo) 12hrs 59mins 09secs
2. Egan Bernal (Team Sky) +8secs
3. Richie Porte (BMC Racing Team) +35secs
4. Jakob Fuglsang (Astana) +1min 16 secs
5. Rui Costa (UAE Team Emirates) +1min 23secs