W wyborach parlamentarnych w 2001 kandydował ponownie na posła z poparciem Ruchu Społecznego AWS, jednak Akcja Wyborcza Solidarność Prawicy nie uzyskała mandatów w Sejmie.
W 2005 został wybrany na senatora z okręgu łódzkiego z rekomendacji Platformy Obywatelskiej (startował jako bezpartyjny, następnie wstąpił do PO). PO zgłaszała jego kandydaturę na wicemarszałka Senatu, jednak została ona odrzucona w tajnym głosowaniu. W trakcie VI kadencji Senatu pełnił funkcję przewodniczącego Komisji Spraw Zagranicznych.
W wyborach parlamentarnych w 2007 po raz czwarty uzyskał mandat poselski, otrzymując w okręgu lubuskim 69 385 głosów. 6 listopada 2007 został wybrany wicemarszałkiem Sejmu, otrzymując 292 głosy poparcia przy 158 głosach sprzeciwu. Objął również funkcję przewodniczącego Polsko-Tajwańskiego Zespołu Parlamentarnego.
W wyborach w 2011 został wybrany na posła VII kadencji, otrzymując w okręgu lubuskim 36 993 głosy. W 2015 również z powodzeniem ubiegał się o poselską reelekcję (dostał 29 304 głosy). We wrześniu 2016 wystąpił z PO, współtworząc koło poselskie i stowarzyszenie Europejscy Demokraci, które w listopadzie tego samego roku współtworzyło Unię Europejskich Demokratów.