Tra i dilettanti è attivo per tre anni in Toscana, vincendo nel 2000 la Bologna-Raticosa. Passato professionista nel 2001 con la Tacconi Sport-Vini Caldirola, dimostra presto di essere un passista-scalatore di ottimo livello. Svolgendo mansioni di gregariato risulta per questo, dal 2004 al 2008, in maglia Saeco e Lampre, uno degli uomini più preziosi in salita per Damiano Cunego nelle grandi corse a tappe.
Nel 2009 passa alla Liquigas sotto indicazione di Ivan Basso. Con la maglia della squadra ottiene il primo e unico successo tra i professionisti, aggiudicandosi la quinta tappa del Critérium du Dauphiné Libéré 2009 grazie ad una fuga all'inizio del Mont Ventoux. Nel 2013 si trasferisce al Movistar Team e nel 2015 alla CCC Sprandi Polkowice; al termine del 2016 abbandona quindi l'attività.