Należał do KLD oraz Unii Wolności, następnie przystąpił do Platformy Obywatelskiej. W wyborach parlamentarnych w 1993 bez powodzenia kandydował do Sejmu z listy Kongresu Liberalno-Demokratycznego. Przez jedną kadencję (1998–2002) zasiadał w kaliskiej radzie miejskiej. W PO obejmował funkcje członka rady krajowej, wiceprzewodniczącego partii w województwie wielkopolskim i zastępcy sekretarza generalnego ugrupowania.
W 2005 został wybrany na senatora VI kadencji w okręgu kaliskim. W Senacie został wiceprzewodniczącym Komisji Samorządu Terytorialnego i Administracji Państwowej, a także klubu senackiego PO. W wyborach parlamentarnych w 2007 po raz drugi uzyskał mandat senatorski, otrzymując 123 876 głosów. W VII kadencji został wybrany na przewodniczącego Komisji Samorządu Terytorialnego i Administracji Państwowej. Ponownie objął funkcję wiceprzewodniczącego klubu senatorów PO, wchodząc też w skład kierownictwa klubu parlamentarnego PO.