Cresciuto nelle giovanili del Sestri Levante, venne ingaggiato dal Genoa, dove giocò per sette campionati, dalla stagione 1959-60 alla stagione 1965-66, per un totale di 168 presenze e di 13 gol realizzati. Con i rossoblù vince la Coppa delle Alpi 1962, risultando tra i migliori giocatori impegnati nella finale contro il Grenoble.[1][2]
Verrà poi ingaggiato nel Milan nella stagione 1966-67 vincendo subito la Coppa Italia e, nelle due stagioni successive, con Nereo Rocco, lo scudetto, la Coppa delle Coppe e la Coppa dei Campioni, senza tuttavia prendere parte a nessuna delle due vittoriose finali europee contro Amburgo ed Ajax. Un grave infortunio lo allontanerà dal calcio giocato.
Allenatore
Appesi gli scarpini al chiodo ha intrapreso la carriera da allenatore dirigendo nel tempo squadre come il Sestri Levante (9º in Serie D), Entella (6º in D), Imperia (1º in D e 5º in C2), Trento (per due volte 2º in Serie C2 nel 1980 e 1985 con altrettante promozioni nella categoria superiore e 10º in C1 nel 1981 e 1986). Sanremese (11º in C1), Pavia (6º in C2), Casale (1º in C2, 10º, 11º e 16º in C1), Pro Vercelli (11º in C2) e Entella. Con quest'ultima nella stagione 1986-1987 bissa il 5º posto record in Serie C2 ottenuto l'anno prima da Gian Piero Ventura. Allenò poi nuovamente i biancocelesti nel 1993-1994 ottenendo un 6º posto in Eccellenza, e nel 1998-1999 vincendo l'Eccellenza e abbandonando la carriera da allenatore.
Nella stagione 2012-2013 è vice allenatore di Vincenzo Melidona per i Giovanissimi Regionali 1999 dell'Entella.
Nell'estate del 2013 passa ai Giovanissimi Regionali 2000 sempre come vice di Melidona, per divenire supervisore tecnico del settore giovanile dei biancocelesti.