Carriera Professionista dal 1997, mise presto in evidenza caratteristiche di cronoman, vincendo al primo anno il titolo nazionale di specialità. Nel 1998 vestì la maglia della Avianca-Telecom, correndo la sua prima Vuelta a España; l'anno dopo passò alla spagnola Vitalicio Seguros, con i cui colori al Giro d'Italia 2000 vinse la cronometro di 45 km da Lignano Sabbiadoro a Bibione imponendosi sul compagno di squadra Jan Hruška. Nello stesso 2000 fu olimpionico ai Giochi di Sydney.
Nel 2001 passò alla US Postal Service capitanata da Lance Armstrong, e l'anno dopo vinse la Vuelta a Murcia a tappe (grazie al podio nell'ultima cronometro) e una cronometro al Giro dei Paesi Bassi. A inizio 2003 fu secondo alla Volta ao Algarve a tappe e conquistò una frazione in salita alla Vuelta a Murcia; durante il Tour de France subito seguente, corso a fianco di Armstrong, vinse la cronometro a squadre di Saint-Dizier con la sua US Postal Service e andò a vestire la maglia gialla di leader della corsa, mantenendola per tre giorni. Divenne il primo colombiano a riuscirvi. Nel 2004, dopo il secondo posto alla Volta ao Algarve (battuto dal compagno Floyd Landis), vinse la cronometro a squadre di apertura della Vuelta a España a León, sfiorando poi il successo (fu secondo) nella cronometro di Almusafes.
Nel 2005 passò alla Phonak Hearing Systems insieme al connazionale Santiago Botero, ma in stagione non ottenne successi, così come nel 2006, in cui fu comunque nono al Giro d'Italia. Nel 2007 gareggiò con i colori della Unibet.com, mentre nel biennio 2008-2009 corse con la Rock Racing, in cui ritrovò Botero e l'ex compagno alla US Postal Service Tyler Hamilton, e con cui fece sue due frazioni della Vuelta a Colombia. Rientrato in Colombia nel 2011, concluse la carriera agonistica nel 2015.
Palmarès 1997 Campionati colombiani, Prova a cronometro
1998 Prologo Vuelta a Colombia (Villavicencio > Villavicencio, cronometro) 6ª tappa Vuelta a Colombia (Armenia > Montenegro)
2000 11ª tappa Giro d'Italia (Lignano Sabbiadoro > Bibione) Campionati panamericani, Prova a cronometro
2002 Classifica generale Vuelta a Murcia 4ª tappa Giro dei Paesi Bassi (Almelo > Almelo, cronometro)
2003 4ª tappa Vuelta a Murcia (Cartagena > Alto de La Santa)
2008 7ª tappa Vuelta a Colombia (Río Negro > La Unión)
2009 12ª tappa Vuelta a Colombia (Ubaté > Tunja)
Altri successi 2003 4ª tappa Tour de France (Joinville > Saint-Dizier, cronosquadre)
2004 1ª tappa Vuelta a España (León > León, cronosquadre)
2007 Classifica sprint Giro di Catalogna
Piazzamenti Grandi Giri
Giro d'Italia 1999: 63º 2000: 15º 2006: 9º
Tour de France 2001: 79º 2002: 73º 2003: 88º 2006: 121º
Vuelta a España 1998: ritirato 1999: ritirato 2000: 45º 2001: 91º 2002: ritirato 2004: 45º 2005: 27º
Classiche monumento
Milano-Sanremo 1999: 126º 2000: ritirato 2003: 104º 2004: 92º 2012: ritirato
Giro delle Fiandre 2003: ritirato
Parigi-Roubaix 2003: ritirato 2004: ritirato 2005: ritirato
Liegi-Bastogne-Liegi 2000: 31º 2003: ritirato 2006: ritirato
Giro di Lombardia 2005: ritirato 2006: ritirato
Competizioni mondiali
Campionati del mondo Lugano 1996 - Cronometro Under-23: 7º Lugano 1996 - In linea Under-23: 26º San Sebastián 1997 - Cronometro Elite: 33º San Sebastián 1997 - In linea Elite: ritirato Zolder 2002 - Cronometro Elite: 34º Zolder 2002 - In linea Elite: ritirato Hamilton 2003 - Cronometro Elite: 29º Hamilton 2003 - In linea Elite: ritirato Verona 2004 - Cronometro Elite: 29º Madrid 2005 - Cronometro Elite: 10º Stoccarda 2007 - Cronometro Elite: 42º
Giochi olimpici Sydney 2000 - In linea: ritirato Sydney 2000 - Cronometro: 24º Atene 2004 - In linea: ritirato Atene 2004 - Cronometro: 15º
Competizioni continentali Giochi panamericani Winnipeg 1999 - In linea: 22º Winnipeg 1999 - Cronometro: 5º
Altri progetti
Collegamenti esterni