Puyol gañou o seu primeiro partido por España o 15 de novembro de 2000 contra os Países Baixos, e continuou sendo un xogador regular nos anos seguintes. Xogou para o seu país nos Xogos Olímpicos de 2000, Copa do Mundo de 2002, Euro 2004
, 2006 Copa do Mundo, Euro 2008, 2009 Copa das Confederacións da FIFA e a Copa do Mundo de 2010.