Od 2006 do 2007 był radnym sejmiku śląskiego z ramienia Platformy Obywatelskiej. W wyborach parlamentarnych w 2007 z ramienia tej partii został wybrany na senatora VII kadencji w okręgu częstochowskim, otrzymując 81 777 głosów. Później wstąpił do PO. W wyborach parlamentarnych w 2011 zdobył 37 471 głosów w okręgu jednomandatowym i po raz drugi wszedł do Senatu. W 2014 kandydował na prezydenta Częstochowy, zajmując 4. miejsce spośród 7 kandydatów. W 2015 nie uzyskał senatorskiej reelekcji. 30 grudnia 2015 zastąpił Krzysztofa Łozińskiego na stanowisku wiceprezydenta Częstochowy odpowiedzialnego za nadzór nad pracą wydziałów administracji architektoniczno-budowlanej, geodezji i kartografii oraz zdrowia, a także Miejskiej Pracowni Urbanistyczno-Planistycznej. W 2018 bez powodzenia kandydował do sejmiku województwa.
W wyborach w 2019 z ramienia Koalicji Obywatelskiej uzyskał mandat posła IX kadencji z okręgu częstochowskiego, otrzymując 10 023 głosy. W wyborach w 2023 z powodzeniem ubiegał się o poselską reelekcję (z wynikiem 10 171 głosów).