Si mise in luce nel 1967 quando riuscì a cogliere due ori ai Giochi del Mediterraneo di Tunisi, rispettivamente nella prova in linea e nella 100 chilometri a squadre. In quella stessa stagione chiuse inoltre al secondo posto il Tour de l'Avenir dietro al francese Christian Robini, gara riservata ai dilettanti.
Passato professionista nel 1969 con la Faema capitanata da Eddy Merckx, riuscì subito a ottenere un'affermazione, vincendo il Giro delle Marche. Partecipò anche al Giro d'Italia dove si ritirò, ottenendo comunque un secondo posto nella nona tappa.
Nel 1970 passò alla Scic, nella quale rimase anche la stagione successiva, e ottenne diversi piazzamenti soprattutto nelle classiche del panorama italiano, su tutti, il secondo posto nella Coppa Agostoni e i terzi nel Gran Premio di Monaco e nel Trofeo Matteotti nel 1970 e il secondo nella Tre Valli Varesine nel 1971.
Nel 1973 nuovo cambio di casacca, con l'approdo alla Zonca, tornò a partecipare al Giro dove non colse nessun piazzamento ma si distinse invece nelle corse in linea, arrivando quarto nella Coppa Placci, sesto alla Tre Valli Varesine e settimo nel Gran Premio Città di Camaiore.
Nel 1974, sempre con la Zonca, ottenne numerosi risultati tra i quali la vittoria della Tre Valli Varesine e il terzo posto nel Giro di Lombardia, per quanto riguarda le prove in linea. Riuscì a concludere al quarto posto assoluto il Giro d'Italia, quello che sarà il suo miglior risultato in una grande prova a tappe, ottenuto anche grazie a due piazzamenti in montagna, i terzi posti nell'undicesima tappa con arrivo a Il Ciocco e nella tappa con arrivo alle Tre Cime di Lavaredo, che lo vide ancora terzo al termine di una lunga fuga.
Fra gli altri risultati della stagione, i secondi posti al Giro del Veneto e al Gran Premio Industria e Commercio di Prato e i terzi posti nel Giro della Provincia Di Reggio Calabria, nel Giro del Piemonte e nel Giro dell'Emilia; fu inoltre quinto nel Tour de Suisse dove sfiorò il successo in tre occasioni.
Anche nel 1975 ottenne diversi risultati, tre furono le sue vittorie fra cui ancora il Gran Premio di Prato e il Giro di Toscana; al Giro fu ottavo, ottenendo anche un terzo posto nell'ottava tappa e un secondo nella ventesima, fu inoltre quarto nella Milano-Sanremo e undicesimo nel Giro di Lombardia.
Nel 1976 vinse solo un circuito, ottenne vari piazzamenti nelle classiche italiane e fu per questo convocato per i campionati mondiali di Ostuni dove doveva svolgere ruolo di gregario. Riuscì a concludere la prova iridata al terzo posto a soli undici secondi dal vincitore Freddy Maertens e Francesco Moser, che si erano giocati invece la vittoria.
Nel 1977 ottenne il suo ultimo successo, affermandosi ancora in una prova tipica del ciclismo italiano, il Giro della Provincia di Reggio Calabria. Chiuse la carriera due anni dopo senza più ottenere risultati.