Germany's Linus Gerdemann won Friday's seventh stage of the Tour of Switzerland as Australia's Michael Rogers retained the yellow jersey.
Germany's Linus Gerdemann celebrates his maiden pro win
CSC rider Gerdemann attacked eight kilometres from the end of the Einsiedeln-to-Lenk leg and held off a five-man chase to claim his maiden win.
Italy's Lorenzo Bernucci was four seconds behind, with Spain's David Extebarria third - 14 seconds back.
Rogers was 23 seconds off the pace but it was enough to keep him in the lead.
Defending champion Jan Ullrich of Germany - one of the favourites for the Tour de France - is 20 seconds adrift in second place in the overall standings.
Australia's Bradley McGee is third, two seconds behind Ullrich, with just two stages to go.
"I still can't understand what I've done," said stage winner Gerdemann.
"I was part of a seven-rider break that had a good gap on the bunch and then near the finish I went to the back and made my surprise attack."
Rogers finished 18th in the stage as the title contenders saved themselves for Saturday's tough journey from Lenk to the ski resort of Verbier.
The stage includes the Col du Pillon and ends with a long, steep climb to the finish.
"I think it will be the decisive stage of the race because of the uphill finish," said Rogers.
"I'm feeling pretty good but it'll also depend if my team can control the racing before the climb.
"After that it'll be up to me and we'll see who is the strongest rider in the race."
Stage seven results:
1. Linus Gerdemann (Germany / Team CSC) 4hrs 25mins
2. Lorenzo Bernucci (Italy / Fassa Bortolo) +4 seconds
3. David Etxebarria (Spain / Liberty Seguros) +14"
4. Karsten Kroon (Netherlands / Rabobank) +15"
5. Fred Rodriguez (US / Davitamon - Lotto) same time
6. Martin Elmiger (Switzerland / Phonak) same time
7. Daniele Colli (Italy / Liquigas) +23"
8. Rene Haselbacher (Austria / Gerolsteiner) same time
9. Baden Cooke (Australia / Francaise des Jeux) same time
10. Robbie McEwen (Australia / Davitamon - Lotto) same time
1. Michael Rogers, Australia, Quick Step, 25hrs 54mins 3secs
2. Jan Ullrich, Germany, T-Mobile, + 20 secs
3. Bradley McGee, Australia, Francaise des Jeux, +22
4. Fabian Jeker, Switzerland, Saunier Duval, +1 min 11secs
5. Frank Schleck, Luxembourg, CSC, + 1:27
6. Chris Horner, United States, Saunier Duval, + 1:31
7. Aitor Gonzalez, Spain, Euskaltel +1:38
8. Tadej Valjavec, Slovenia, Phonak, +1:39
9. Koldo Gil Perez, Spain, Liberty, +1:42
10. Beat Zberg, Switzerland, Gerolsteiner, +1:57