Puyol won met Spaans olympisch elftal in 2000 de zilveren medaille op de Olympische Zomerspelen van Sydney. In de finale werd na strafschoppen verloren van Kameroen nadat de wedstrijd in 2-2 was geëindigd. Op 15 november 2000 debuteerde de verdediger tegen Nederland in het Spaanse nationale elftal. Op 17 april 2002 maakte Puyol tegen Noord-Ierland zijn eerste interlanddoelpunt. Hij nam met Spanje deel aan het WK 2002, het EK 2004 en het WK 2006. Op alle drie deze toernooien was Puyol basisspeler. In de tweede groepswedstrijd tegen Paraguay op het WK 2002 belandde een hard schot van Francisco Arce via het been van Puyol in het Spaanse doel. Het WK 2006 was voor Puyol in de groepsfase een sterk WK, Spanje verloor in de achtste finales van Frankrijk door een doelpunt gemaakt door Viera na een vrije trap die gedeeltelijk was veroorzaakt door Puyol. Spanje-Frankrijk werd 1-3. Tijdens het EK 2008 won Puyol met de Spaanse ploeg het kampioenschap. Op 29 juni werd in Wenen met 1-0 gewonnen van Duitsland. In juni 2009 behaalde Puyol met Spanje de derde plaats op de Confederations Cup. Hij speelde een belangrijke rol in de halve finale van het WK 2010, toen hij tegen Duitsland de winnende treffer scoorde (1-0). Puyol werd op datzelfde WK wereldkampioen, door in de finale het Nederlands voetbalelftal met 1-0 te verslaan. Europees- en wereldkampioen Spanje kon tijdens het EK 2012 in Oekraïne en Polen niet beschikken over Carles Puyol, zijn herstel van een knieblessure vergde te veel tijd.