W latach 2002–2004 zasiadał w radzie miejskiej Szczecina.

W latach 1995–1999 był sekretarzem szczecińskiej Socjaldemokracji Rzeczypospolitej Polskiej. Od 1999 pełnił funkcję przewodniczącego rady wojewódzkiej Sojuszu Lewicy Demokratycznej i sekretarza rady krajowej. Od 6 marca 2004 do 29 maja 2005 był wiceprzewodniczącym Sojuszu Lewicy Demokratycznej, 29 maja 2005 powołano go na stanowisko sekretarza generalnego tej partii. 31 maja 2008 został wybrany na przewodniczącego SLD, uzyskując 231 głosów na 450 zgromadzonych na kongresie delegatów.

W wyborach parlamentarnych w 2001 bez powodzenia kandydował do Sejmu. W czerwcu 2004 objął mandat poselski w miejsce Bogusława Liberadzkiego (wybranego do Parlamentu Europejskiego). Na posła został wybrany ponownie w wyborach parlamentarnych w 2005 z listy SLD w okręgu szczecińskim. W wyborach parlamentarnych w 2007 po raz trzeci został posłem, kandydując z listy koalicji Lewica i Demokraci i otrzymując 29 585 głosów. 22 kwietnia 2008 został posłem klubu Lewica. 17 czerwca 2009 został wybrany na jego przewodniczącego, zastępując wybranego do Parlamentu Europejskiego Wojciecha Olejniczaka.