Basso was banned for a doping offence in 2007
Ivan Basso is on the brink of winning the Giro D'Italia after extending his overall lead to one minute 15 seconds after Saturday's penultimate stage.
Italian Basso was third as he pulled another 24 seconds clear of nearest rival David Arroyo, who was fifth.
Swiss Johan Tschopp won the 178km stage from Bormio to Ponte di Legno-Tonale, 16 seconds ahead of Cadel Evans.
Barring a disaster, Liquigas rider Basso will win his second Giro after Sunday's 15km time trial in Verona.
Bbox-Bouygues rider Tschopp was the first rider over the Passo di Gavia - the race's highest summit - before taking control on the descent and holding off a strong challenge from Australian world road race champion Evans, who had attacked with 3km to go.
2006 winner Basso had enough energy in his reserves to win a sprint finish with compatriot Michele Scarponi to finish third, eight seconds behind Evans.
Basso had taken the pink jersey from Arroyo on Friday after coming in second, over three minutes ahead of the Spanish Caisse d'Epargne rider in the 195km epic ride from Brescia to Aprica in the Italian Alps.
Despite his lead and historically being a superior time-trialer to Arroyo, he was reluctant to declare victory.
"The Giro still isn't over," said the 32-year-old, who was banned for two years in 2007 after admitting doping charges.
Stage 20 results:
1. Johann Tschopp (Switzerland, Bouygues) 5 hrs, 26 mins, 47 secs
2. Cadel Evans (Australia, BMC) +0:16
3. Ivan Basso (Italy, Liquigas) +0:25
4. Michele Scarponi (Italy, Androni) same time
5. David Arroyo Duran (Spain, Caisse d'Epargne) +0:41
6. Vincenzo Nibali (Italy, Liquigas) +0:43
7. John Gadret (France, La Mondiale) +0:48
8. Bauke Mollema (Netherlands, Rabobank) +0:50
9. Daniele Righi (Italy, Lampre) +0:57
10. Vasil Kiryienka (Belarus, Caisse d'Epargne) +1:02
Overall Standings (after 20 of 21 stages):
1. Ivan Basso (Italy, Liquigas) 87hrs, 23mins, 00 secs
2. David Arroyo Duran (Spain, Caisse d'Epargne) +1:15
3. Vincenzo Nibali (Italy, Liquigas) +2:56
4. Michele Scarponi (Italy, Androni) +2:57
5. Cadel Evans (Australia, BMC) +3:47
6. Richie Porte (Australia, Saxo Bank) +7:25
7. Alexandre Vinokourov (Kazakhstan, Astana) +7:31
8. Carlos Sastre (Spain, Cervelo) +8:55
9. Robert Kiserlovski (Croatia, Liquigas) +14:06
10. Marco Pinotto (Italy, Columbia) +15:00