Nato come velocista su strada, da dilettante arrivò a conquistare la maglia tricolore nel 1973 succedendo a Francesco Moser. Divenuto professionista l'anno successivo, non riuscì ad affermarsi e non colse nessuna vittoria su strada, pur prendendo parte per sette volte al Giro d'Italia.
Nel 1977 partecipò al suo primo campionato del mondo di mezzofondo, vincendo l'anno successivo il suo primo (di sei totali) campionato italiano della specialità. La prima maglia iridata arrivò invece nel 1983, dopo averla sfiorata nei tre anni precedenti con piazzamenti sul podio mondiale. Si laureò campione del mondo fra gli stayer anche nel 1985 e nel 1986, stabilendo il record del mondo sull'ora e sui 100 km a Bassano del Grappa l'11 luglio 1986. In carriera disputò inoltre numerose Sei giorni.
Ritiratosi dalle corse nel 1987, dal 1993 al 2004 è stato quindi nello staff tecnico, come direttore sportivo aggiunto, della Mercatone Uno/Saeco. Dal 2005 lavora quindi per la Lampre, formazione nata proprio nel 2005 dalla fusione tra la Saeco e la vecchia Lampre, e nota a partire dal 2017 come UAE Emirates.
1895: Jimmy Michael ·1896: Arthur Adalbert Chase ·1897: Jack William Stocks ·1898: Richard Palmer ·1899: Harry Gibson ·1900: Constant Huret ·1901: Thaddäus Robl ·1902: Thaddäus Robl ·1903: Piet Dickentman ·1904: Robert Walthour ·1905: Robert Walthour ·1906: Louis Darragon ·1907: Louis Darragon ·1908: Fritz Ryser ·1909: Georges Parent ·1910: Georges Parent ·1911: Georges Parent ·1912: George Wiley ·1913: Paul Guignard ·1914-1919: non disputato ·1920: Georges Sérès ·1921: Victor Linart ·1922: Léon Vanderstuyft ·1923: Paul Suter ·1924: Victor Linart ·1925: Robert Grassin ·1926: Victor Linart ·1927: Victor Linart ·1928: Walter Sawall ·1929: Georges Paillard ·1930: Erich Möller ·1931: Walter Sawall ·1932: Georges Paillard ·1933: Charles Lacquehay ·1934: Erich Metze ·1935: Charles Lacquehay ·1936: André Raynaud ·1937: Walter Lohmann ·1938: Erich Metze ·1939-1945: non disputato ·1946: Elia Frosio ·1947: Raoul Lesueur ·1948: Jean-Jacques Lamboley ·1949: Elia Frosio ·1950: Raoul Lesueur ·1951: Jan Pronk ·1952: Adolf Verschueren ·1953: Adolf Verschueren ·1954: Adolf Verschueren ·1955: Guillermo Timoner ·1956: Graham French ·1957: Paul Depaepe ·1958: Walter Bucher ·1959: Guillermo Timoner ·1960: Guillermo Timoner ·1961: Karl-Heinz Marsell ·1962: Guillermo Timoner ·1963: Leo Proost ·1964: Guillermo Timoner ·1965: Guillermo Timoner ·1966: Romain De Loof ·1967: Leo Proost ·1968: Leo Proost ·1969: Jaap Oudkerk ·1970: Ehrenfried Rudolph ·1971: Theo Verschueren ·1972: Theo Verschueren ·1973: Cees Stam ·1974: Cees Stam ·1975: Dieter Kemper ·1976: Wilfried Peffgen ·1977: Cees Stam ·1978: Wilfried Peffgen ·1979: Martin Venix ·1980: Wilfried Peffgen ·1981: René Kos ·1982: Martin Venix ·1983: Bruno Vicino ·1984: Horst Schütz ·1985: Bruno Vicino ·1986: Bruno Vicino ·1987: Max Hürzeler ·1988: Danny Clark ·1989: Giovanni Renosto ·1990: Walter Brugna ·1991: Danny Clark ·1992: Peter Steiger