W 1980 był wśród inicjatorów powołania Niezależnego Zrzeszenia Studentów na Uniwersytecie Wrocławskim. Należał do Porozumienia Centrum, z którego przeszedł do Prawa i Sprawiedliwości. W 2001 i 2005 kandydował do Sejmu z listy PiS w okręgu zielonogórskim, ale nie został wybrany. Od 5 stycznia 2006 do 21 sierpnia 2006 zajmował stanowisko wojewody lubuskiego. Zrezygnował z tej funkcji, obejmując mandat poselski opróżniony przez Kazimierza Marcinkiewicza, powołanego na stanowisko p.o. prezydenta Warszawy.
W wyborach parlamentarnych w 2007 po raz drugi został posłem, otrzymując 21 184 głosy. W wyborach do Parlamentu Europejskiego w 2009bezskutecznie ubiegał się o mandat europosła w okręgu gorzowskim, uzyskując 9776 głosów.
W wyborach do Sejmu w 2011 z powodzeniem ubiegał się o reelekcję, dostał 12 598 głosów. W 2015 został ponownie wybrany do Sejmu, otrzymując 17 530 głosów.