Consigliere comunale del Psi durante il secondo mandato di Adolfo Orsini (1993-97), è poi assessore indipendente nella giunta guidata dallo stesso (1997-2001) nella sua terza sindacatura, quindi assessore nella prima giunta e nella seconda giunta di Fernanda Cecchini, prima per lo Sdi (2001-06) quindi per i Socialisti uniti (2006-11). Nello stesso periodo è anche consigliere della Provincia di Perugia per i Socialisti riformisti (2004-09), ricoprendo poi come Indipendente anche la carica di presidente del consiglio provinciale (2009-14).
Quando nel 2010 la sindaca Fernanda Cecchini si dimette per ricoprire la carica di assessore regionale la sostituisce in quanto vicesindaco. Alle successive elezioni viene candidato ed eletto sindaco da una coalizione che comprende Psi, Pd, Rifondazione comunista e i Comunisti italiani. Al termine del mandato viene confermato, sostenuto da una coalizione che comprende Pd, Sinistra la Sinistra per Castello e Socialisti. Durante questa seconda sindacatura viene eletto (nel 2018) presidente della Provincia di Perugia.
Storico elezioni comunali di Città di Castello, https://www.tuttitalia.it/umbria/73-citta-di-castello/storico-elezioni-comunali/ (consultato il 16 luglio 2021).
Governo italiano, Ministero dell’Interno, Dipartimento per gli affari interni e territoriali, Anagrafe degli amministratori locali e regionali, https://amministratori.interno.gov.it/amministratori/ServletNomeReg, sub voce (consultato il 24 maggio 2021).
Eleonora Fontana (con Moreno Migliorati), I 9 anni da sindaco di Fernanda Cecchini, https://www.lavoce.it/i-9-anni-da-sindaco-di-fernanda-cecchini/ (consultato il 24 maggio 2021).