Vinse due volte la Milano-Torino, nel 1954 e nel 1958, al termine di due lunghe fughe solitarie. Fu un ottimo passista scalatore e un buon corridore di corse a tappe. Sesto al Giro d'Italia del 1955 e terzo nel 1956, dietro a Charly Gaul e Fiorenzo Magni. Nel 1956 fu tra i protagonisti della memorabile tappa del Monte Bondone, quando sotto la grandine e la neve, con temperature che sfiorarono i trenta gradi sotto zero, fu uno dei pochi a limitare il distacco da Gaul. Al Giro d'Italia 1958 indossò per tre giorni la maglia rosa, cedendola poi al vincitore Ercole Baldini.