W wyborach parlamentarnych w 1989 został wybrany na posła z ramienia PZPR. W 1990 wszedł w skład rady naczelnej Socjaldemokracji Rzeczypospolitej Polskiej. W 1991, 1993, 1997, 2001 i 2005 uzyskiwał mandat posła na Sejm kolejnych kadencji z ramienia Sojuszu Lewicy Demokratycznej. W latach 1997–2001 reprezentował Sejm RP w Komisji Technologii Wojskowych w Unii Zachodnioeuropejskiej. W 1999 został członkiem partii SLD, okresowo zasiadał w jej zarządzie krajowym. W latach 2001–2005 pełnił funkcję sekretarza stanu w Ministerstwie Obrony Narodowej.
W wyborach parlamentarnych w 2007 uzyskał kolejny raz reelekcję, kandydując z listy koalicji Lewica i Demokraci w okręgu bydgoskim i otrzymując 42 347 głosów. Był przewodniczącym Komisji Obrony Narodowej oraz przez pewien czas Komisji do Spraw Służb Specjalnych. W 2008 wstąpił do klubu poselskiego Lewica. W wyborach do Parlamentu Europejskiego w 2009 wystartował w listy Sojuszu Lewicy Demokratycznej – Unii Pracy. Uzyskał mandat eurodeputowanego z wynikiem 69 776 głosów. W PE został członkiem Postępowego Sojuszu Socjalistów i Demokratów. W wyborach do Parlamentu Europejskiego w 2014 uzyskał reelekcję, otrzymując 62 188 głosów. W wyborach do Parlamentu Europejskiego w 2019 startował z listy Koalicji Europejskiej jako kandydat SLD. Nie uzyskał jednak reelekcji, zdobywając 53 157 głosów.