Error message

  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 307 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 308 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 310 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 307 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 308 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in field_available_languages() (line 95 of /var/www/html/docroot/modules/field/field.multilingual.inc).
  • Warning: Trying to access array offset on value of type null in field_is_translatable() (line 176 of /var/www/html/docroot/modules/field/field.multilingual.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke_multiple() (line 338 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke() (line 199 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in _field_invoke() (line 200 of /var/www/html/docroot/modules/field/field.attach.inc).
  • Warning: Trying to access array offset on value of type null in field_available_languages() (line 95 of /var/www/html/docroot/modules/field/field.multilingual.inc).
  • Deprecated function: Return type of Aws\HandlerList::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 32 of /var/www/html/vendor/aws/aws-sdk-php/src/HandlerList.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of & Aws\Endpoint\Partition::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Aws\Credentials\Credentials implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in include() (line 8 of /var/www/html/vendor/aws/aws-sdk-php/src/Credentials/Credentials.php).
  • Deprecated function: Return type of Aws\Command::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of & Aws\Command::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Result::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of & Aws\Result::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
×

Entertainment

The 18 Best Defenders Of All Time

While the statistics that attackers generate greatly lend themselves to the formulation of lists such as this, things get a little more ambiguous where defenders are concerned. However, there’s certainly some truth in the old adage that defense wins championships: If you follow the path of silverware over the last century, it’s remarkable how many names you’ll find cropping up time after time. We’ve attempted to boil this list down to the 18 best defenders of all time, but the truth is that a more honest survey would probably need to include at least 50 names to somewhat combat a feeling of gross injustice. 

Regardless, if you enjoy this summary, check out our rankings of the 18 best Premier League players of all time and the 18 best World Cup players of all time.

The18 Best Defenders In Soccer History

#18. Carles Puyol

Embed from Getty Images

Puyol spent his entire career with Barcelona, where he was captain for a decade and led the club to six LaLiga titles and three UEFA Champions League crowns. At the international level, the versatile defender was capped 100 times by Spain, and he was instrumental in La Furia Roja’s Euro 2008 win and 2010 World Cup triumph. What’s more, he accomplished it all with a lion’s mane.

#17. Roberto Carlos

Embed from Getty Images

He made his name as the most attack-minded left back in the history of the game, and his most famous moment is that insane banana shot against France in 1997, but you don’t spend 11 years at Real Madrid and receive 125 caps for Brazil — the second most all time — without also knowing a thing or two about defending.

He’s a three-time Champions League winner and was named the Ballon d’Or runner-up in 2002, the year he helped Brazil triumph at the World Cup. 

#16. Fabio Cannavaro

Embed from Getty Images

Cannavaro anchored the miserly Italian defense that won the 2006 World Cup without conceding a goal from open play. It was because of this that Cannavaro won the Ballon d’Or that year, becoming just the third defender to capture football’s biggest individual prize.

At club level, the center back helped Parma to one of its most successful eras, and he also won two LaLiga titles with Real Madrid.

#15. Djalma Santos

Embed from Getty Images

Regarded as one of the finest right backs of all time, Santos redefined the position with his defensive excellence mixed with an ability to get forward and join the attack — a skill that was previously unheard of amongst defenders.

He’s a two-time World Cup champion and one of only three players to be included in three World Cup All-Star teams. When it comes to footballers with the most official appearances to their names, Santos ranks 11th all time. The man chalked up 1,065 games of professional football — only four outfield players managed more.

#14. Daniel Passarella

Embed from Getty Images

Before Ronald Koeman came around playing his hybrid midfield/defender game, Passarella was football’s top scoring defender with 134 goals in 451 games. The man would certainly chip in with goals while playing for River Plate, Fiorentina and Inter, but his biggest accomplishment was captaining Argentina to glory at the 1978 World Cup on home soil.

He would finish his international career with 70 caps and 22 goals. However, although he was part of the winning 1986 squad, his frosty relationship with Maradona and coach Carlos Bilardo kept him sidelined. 

#13. Laurent Blanc

Embed from Getty Images

Le Président was part of a formidable France backline that won the 1998 World Cup while conceding only two goals and then proceeded to lift the trophy at Euro 2000. 

He appeared for a smorgasbord of clubs throughout his career, including Montpellier, Napoli, Barcelona, Marseille, Inter and Manchester United, where he got to continue his excellent tradition of kissing French goalkeeper Fabian Barthez on the top of his bald head.

#12. Sergio Ramos

Embed from Getty Images

Hide your kids, hide your wife, it’s Sergio Ramos. He’s perhaps the most hated footballer on the planet, but a collection of four Champions League titles, two European Championships and one World Cup says it all — we’re talking about one of the most successful footballers of all time and the captain of the 21st century's greatest team.

He’s a master of the dark arts, but alongside Lionel Messi, he’s also the only player to score in 15 consecutive LaLiga seasons.

#11. Alessandro Nesta 

Embed from Getty Images

Injuries curtailed his mark on the game, but the man with the Samson hair was as complete a defender as the world’s ever seen. Nesta was a four-time Serie A defender of the year, a three-time Scudetto winner and twice the holder of Big Ears.

He was physically imposing and dominant in the air, but he was renowned for his pace, technical quality and elegance in helping build play from the back. 

#10. Javier Zanetti 

Embed from Getty Images

Zanetti was an ageless wonder. Seriously, look at the season-by-season photos of his 19-year career with Inter and you’ll have no clue which photo was taken in 1995 and which was taken in 2013. 

That’s why the man represented Argentina 143 times — the second most ever — and appeared in more Serie A matches than any other foreign player. When it comes to professional appearances, only Roberto Carlos and Xavi have played in more matches as outfield players.

He won 16 trophies during his time with Inter, and his number has been retired at the club.

#9. Philipp Lahm

Embed from Getty Images

Lahm was hailed by Pep Guardiola as the smartest footballer of all time, so it’s clear that he’s the smartest footballer of all time. “The Magic Dwarf” appeared in over 500 matches for Bayern Munich, winning eight Bundesliga titles and the 2012-13 Champions League, but his crowning moment was captaining Germany to glory at the 2014 World Cup.

He went out on top following the tournament in Brazil, promptly retiring with 113 caps to an international career that began at the tender age of 20.

#8. Ruud Krol 

Embed from Getty Images

The legendary Dutch defender won six titles with Ajax and back-to-back-to-back European Cups with the side between 1970 and 1973, and he was a vital component of the Netherlands Total Football side that captivated the world in the 1970s.

That team would finish runners-up at subsequent World Cups and in third place at Euro ’76, but Kruul won plaudits while splitting his time at left back and sweeper for the Oranje.

He would win 83 caps for the Netherlands and score four goals, including a 25-yard screamer against Argentina at the ’74 World Cup.

#7. Claudio Gentile

Embed from Getty Images

The Italian defender almost made 300 appearances for Juventus while winning six Serie A titles, and he was a fixture for Italy at two World Cups, including the nation’s triumph at the ’82 event in Spain.

It was at that tournament that Gentile effectively man-marked Diego Maradona out of a game, then kept a Brazilian side with Zico, Falcão and Sócrates at bay before finally shutting down Karl-Heinz Rummenigge and West Germany in the final.

#6. Marcel Desailly 

Embed from Getty Images

The France side that won the ’98 World Cup and Euro 2000 is regarded as having one of the greatest backlines in the history of the game, and Desailly was its most formidable component. 

“The Rock” collected 116 caps for France and is regarded as the nation’s greatest ever defender, and he has a legendary status at Marseille, AC Milan and Chelsea. 

He’s also one of the select few to have won the Champions League title with two different clubs, winning it with Marseille in ’93 and Milan in ’94.

#5. Cafu

Embed from Getty Images

He’s the most capped player in the history of the Brazil national team, what more do you want? He played for the Selecao at four straight World Cups, and he’s the only player to appear in three consecutive finals, including winning the ’94 tournament and captaining the winning side in ’02.

He’s also a two-time Copa America winner, a Champions League winner with Milan and he played a vital role in Roma’s last Serie A title.

#4. Bobby Moore

Embed from Getty Images

Moore is a club legend at West Ham United, but he’s a genuine English god after captaining his country to glory at the ’66 event on home soil. His total of 108 caps is second to only David Beckham when it comes to outfield players, and he’s been immortalized outside Wembley Stadium with a bronze statue.

The highest testament you can pay to Moore is that Pelé cited him as the greatest defender he’d ever played against.

#3. Franco Baresi 

Embed from Getty Images

A one-club man who played for Milan for 20 years while appearing in 531 matches, Baresi won six Serie A titles with the side and three UEFA Champions Leagues. He was named Milan’s Player of the Century in 1999. 

At the international level, he appeared at three World Cups (winning the ’82 event), two European Championships and at the ’84 Summer Olympics while collecting 81 caps. 

He was a commander on the pitch, captaining both Milan and Italy for long periods of his career.

#2. Paolo Maldini

Embed from Getty Images

You can’t talk about Baresi without then mentioning Maldini. Maldini was also a one-club man, playing 25 seasons with Milan and winning 26 trophies, including five Champions League titles and seven Serie A Scudettos

At the international level, he earned 126 caps and played at four World Cups and three European Championships, making the All-Star team in five of the seven tournaments.

He was twice a third-place finisher in Ballon d’Or voting, and he kept going strong until the age of 41. 

#1. Franz Beckenbauer

Embed from Getty Images

Der Kaiser isn’t only regarded as one of the greatest defenders of all time, he’s appropriately mentioned as one of the greatest footballers in the history of the game.

He’s credited with inventing the modern sweeper position, and he was twice awarded the Ballon d’Or while appearing 103 times for Germany and nearly 450 times for Bayern Munich.

With Bayern, he won four Bundesliga titles and three European Cups. With Germany, he won the ’72 European Championship and the ’74 World Cup, and he was named to the World Cup All-Star Team on three separate occasions. 

He’s one of three men to have won the World Cup as both a player and a manager.

Videos you might like