W latach 1990–1998 zasiadał w radzie miejskiej Międzyrzeca Podlaskiego, a następnie do 2001 w sejmiku lubelskim I kadencji z ramienia Akcji Wyborczej SolidarnośćBędą Rządzić Lubelszczyzną, „Gazeta Wyborcza” Lublin nr 245 z 19 października 1998, s. 4.. W 2001 został działaczem Platformy Obywatelskiej, w latach 2011–2013 i 2021–2026 pełnił funkcję przewodniczącego struktur tej partii (w 2025 przekształconej w Koalicję Obywatelską) w województwie lubelskim.

W wyborach w 2001, 2005 i 2007 uzyskiwał mandat posła na Sejm w okręgu chełmskim z listy PO. W wyborach w 2011 z powodzeniem ubiegał się o reelekcję, dostał 14 202 głosy. W wyborach w 2015, otrzymując 7135 głosów, ponownie został wybrany na posła.

W wyborach do Parlamentu Europejskiego w 2019 bezskutecznie ubiegał się z listy Koalicji Europejskiej jako reprezentant PO o mandat posła do PE w okręgu obejmującym województwo lubelskie. W wyborach do Sejmu w tym samym roku nie uzyskał poselskiej reelekcji, zajmując 3. miejsce (pierwsze niemandatowe) na okręgowej liście Koalicji Obywatelskiej.