Należał kolejno do Ruchu Obywatelskiego Akcja Demokratyczna, Unii Demokratycznej, Unii Wolności oraz Stronnictwa Konserwatywno-Ludowego. W wyborach parlamentarnych w 1991 oraz 1993 bez powodzenia ubiegał się o mandat poselski z ramienia UD. W 2001 współtworzył struktury Platformy Obywatelskiej w województwie wielkopolskim. W wyborach w 2005 został z jej listy wybrany posłem V kadencji w kalisko-leszczyńskim okręgu wyborczym. W wyborach parlamentarnych w 2007 po raz drugi uzyskał mandat poselski, otrzymując 19 788 głosów. 6 listopada 2009 został powołany na członka sejmowej komisji śledczej ds. zbadania nielegalnych nacisków na kształt ustawy o grach i zakładach wzajemnych.

W drugiej turze wyborów samorządowych w 2010 został wybrany na urząd prezydenta Ostrowa Wielkopolskiego, w związku z czym wygasł jego mandat poselski (jego miejsce w Sejmie zajął Łukasz Borowiak). W 2014 nie uzyskał reelekcji, przegrywając w drugiej turze wyborów z Beatą Klimek.