W wyborach parlamentarnych w 1991 i 1993 bez powodzenia ubiegał się z listy „Solidarności” o mandat poselski. W latach 1998–2005 pełnił funkcję radnego Poznania, do 2002 przewodniczył radzie miejskiej, następnie był jej wiceprzewodniczącym. Politycznie związany był z Akcją Wyborczą Solidarność (od 1997 do 2001 był jej wiceprzewodniczącym w Wielkopolsce, a od 1998 do 2001 przewodniczył Ruchowi Społecznemu AWS w Poznaniu). W wyborach parlamentarnych w 1997 bez powodzenia ubiegał się o mandat poselski z listy AWS w województwie poznańskim (otrzymał 4392 głosy). W 2001 dołączył do Platformy Obywatelskiej, w tymże roku ponownie startował z jej ramienia do Sejmu. Zasiadał w krajowym sądzie koleżeńskim PO, przewodniczył także jej strukturom w Poznaniu.
W wyborach parlamentarnych w 2005 z listy PO uzyskał mandat posła V kadencji w okręgu poznańskim, zdobywając 4482 głosy. W wyborach w 2007 po raz drugi został posłem, otrzymując 20 695 głosów. W Sejmie VI kadencji został wiceprzewodniczącym Komisji do Spraw Unii Europejskiej oraz członkiem Komisji Spraw Zagranicznych.