Het seizoen 2012 stond voor Viviani volledig in het teken van de Olympische Spelen, waar hij in het omnium hoopte deel te nemen. Zijn voorbereiding liep perfect, zo won hij etappes in de Ronde van San Luis, de Ronde van Reggio Calabria en de Internationale Wielerweek. In die tweede won hij tevens het eindklassement voor Daniele Colli. Hij was dus klaar om te schitteren op het olympisch omnium. In alle onderdelen eindigde hij in de sub-top, in de afvalling werd hij tweede. Hij zou uiteindelijk stranden op een zesde plek met 34 punten. Hierna reed hij voor het eerst een grote ronde, de Ronde van Spanje, en won hij wederom een etappe in de Ronde van Peking. Het hoogtepunt van zijn winterseizoen was het winnen van de puntenkoers op het EK baan.