Da calciatore ha vestito le maglie di formazioni importanti come la Juventus, la Lazio ed il Bologna, per poi chiudere la carriera da giocatore nella squadra della sua città, il Viareggio.
Da allenatore ha esordito nei primi anni settanta guidando la Fulgorcavi Latina dalla Prima categoria alla Serie D. Dopo aver frequentato il Supercorso di Coverciano nel 1977-1978, ha iniziato la sua carriera di allenatore guidando il Varese.
Guidò il Lecce alla sua prima promozione in Serie A nel 1984-1985 ed era sulla panchina dei salentini quando questi, ormai retrocessi in Serie B, nel 1986 sconfissero la Roma all’Olimpico per 3-2, interrompendo la rincorsa allo scudetto dei romanisti, che diedero via libera alla Juventus.
Allenò la Lazio (1986-1987) in Serie B quando questa riuscì a salvarsi dalla retrocessione in C, dopo aver vinto dei drammatici spareggi, partendo all’inizio del campionato con una penalizzazione di 9 punti (all’epoca la vittoria valeva 2 punti).
In seguito ha cambiato spesso panchina guidando Avellino, Torino, Verona e Lucchese fino ad approdare al Bari. Qui rimarrà per ben sei stagioni, fino alla stagione 2000-2001, lanciando Antonio Cassano ai grandi livelli.
Ha quindi guidato Vicenza e Como, ultima formazione allenata (Serie A 2002-2003 e buona parte della Serie B 2003-2004). Ha allenato nell’estate del 2002 (anche se per poche settimane, fino al fallimento) la Fiorentina retrocessa sul campo in Serie B e successivamente retrocessa a tavolino in C2.
In veste di allenatore ha ottenuto 5 promozioni in Serie A con Lecce (1984-1985), Lazio (1987-1988), Torino (1989-1990), Verona (1990-1991), Bari (1996-1997) e una promozione in Serie B con il Varese (1979-1980).