Puyol started playing football for his hometown club, La Pobla de Segur, as a goalkeeper. However, after injury problems with his shoulder, he switched to striker. In 1995, he moved to join FC Barcelona's youth team, switching positions again, to play as a defensive midfielder. In 1997, Puyol stepped up to play for the club's B-team, occupying the position of right back.
In 1999, then coach Louis van Gaal promoted Puyol to the first team. He made his first division debut on October 2, 1999, at Real Valladolid, in a 2–0 win. After that, he successfully made another reconversion, now to central defender; he was awarded "Best European right back" award by UEFA in 2002 and "Best European centre back" in 2005, 2006 and 2008. Puyol also won the trophy "UEFA Club Best Defender" in 2006.
Puyol was first chosen as the captain of Barcelona at the end of the 2003–04 season, after the retirement of Luis Enrique. On September 16, 2008, he made his 400th appearance in all competitions for Barça's first team in a Champions League match against Sporting Clube de Portugal.
On October 30, 2009, Puyol signed a new three-year extension to his contract, running until 2013. This link also contained a release clause of ¤10 million euros. The next day, in the league against CA Osasuna, he became the third player with more official matches for the Catalans with 453, surpassing Carles Rexach, now only trailing teammate Xavi Hernández and record holder Migueli (548 appearances).  International career
Puyol won his first Spanish cap on November 15, 2000 against the Netherlands, and remained a regular fixture ever since. He played for the nation at the 2000 Olympics, 2002 FIFA World Cup, UEFA Euro 2004, 2006 FIFA World Cup, Euro 2008 and the Confederations Cup 2009.
At Euro 2008, Puyol started throughout the vast majority of the competition, as the defensive backline only conceded two goals in five games, in an eventual final win against Germany. He was named in the Team of the Tournament with defensive partner Carlos Marchena of Valencia CF.
Puyol started three out of five games at the 2009 Confederations Cup, and captained the team when Iker Casillas was rested for the last group stage match. As Spain finished third, he and three other teammates were named in the Team of the Tournament.