Puyol fait ses débuts avec l'équipe d'Espagne le , quelques mois après avoir perdu la finale des JO de Sydney. Après plusieurs places d'honneur, il remporte le Championnat d'Europe des Nations 2008 et la Coupe du monde 2010. En 2012, une blessure l'empêche de prendre part au sacre de la "Roja" à l'Euro 2012. Puyol prend sa retraite internationale en 2013 après avoir atteint les cent sélections durant lesquelles il inscrit trois buts.