Cresciuto nelle giovanili del , comincia a giocare come ala sinistra. Dopo esperienze nelle serie minori con e , nel 1952 passa alla . È Fulvio Bernardini a sfruttarne a pieno le potenzialità e a spostarlo sulla mediana. Gioca a quasi totale sostegno dell'attacco, grazie alla copertura dell'ala tornante Prini. È protagonista assoluto del primo scudetto viola, giocando tutte le partite del campionato 1955-1956; l'anno successivo vince coi gigliati la Coppa Grasshoppers. Bandiera della Fiorentina per 8 campionati, disputa in maglia viola 216 incontri realizzando 16 gol. Al suo attivo anche quattro secondi posti consecutivi, e le finali di Coppa dei Campioni — la prima raggiunta da un club italiano — e di Coppa Italia, perse rispettivamente nel 1957 contro il e nel 1958 contro la . Chiude la sua carriera nell'.