It is the 32-year-old Argentine’s first Ballon d’Or since 2015 and comes after he scored 54 times for club and country in 2018-19, in which Barca won La Liga.
Virgil van Dijk was second – one of four Liverpool players in the top seven, including Sadio Mane in fourth.
Juventus and Portugal forward Cristiano Ronaldo, who has won the award five times, was third in the voting.
England defender Lucy Bronze was beaten to the women’s award, finishing second behind Megan Rapinoe, who was Golden Ball winner as USA claimed a second successive World Cup in 2019.
Liverpool keeper Alisson won the inaugural Yashin Trophy for best goalkeeper, ahead of Barcelona’s Germany international Marc-Andre ter Stegen and Brazilian compatriot Ederson of Manchester City.
Defender Matthijs de Ligt took the Kopa Trophy, awarded to the best under-21 player and selected by former Ballon d’Or winners.
The 20-year-old, who joined Juventus this summer after helping Ajax reach the semi-finals of last season’s Champions League, beat Borussia Dortmund and England forward Jadon Sancho to the award.
Messi’s win means the Ballon d’Or award has been won by a player from Spain’s La Liga in each of the last 11 years, including last year’s winner Luka Modric, who broke the 10-year Messi-Ronaldo monopoly on the prize.
“Today is my sixth Ballon d’Or. It’s a completely different moment, lived with my family and my children,” Messi said.
“As my wife said, you must never stop dreaming but always work to improve and continue to enjoy. I am very lucky, I am blessed.
“I hope to continue for a long time. I realise that I am very lucky, even if, one day, retirement will ring. It will be difficult.
“But I still have beautiful years ahead of me. Time goes very quickly, so I want to enjoy football and my family.”
The Argentine forward recently notched up 700 appearances for Barca, during which time he has scored a phenomenal 614 goals while winning 34 trophies, including 10 La Liga and four Champions League titles, and a host of other records and awards.
His superb displays for Barcelona enabled him to hold off the challenge of Champions League winner Van Dijk, who was aiming to become the first defender to win the award since Italy’s Fabio Cannavaro in 2006.
“It was an amazing year, but there’s a couple of players like that who are a bit unnatural,” Van Dijk said of Messi and Ronaldo. “So you need to respect greatness as well.
“I was close, but there was just someone a little bit better.
“I’m very proud of what I achieved last year with Liverpool and Holland, and hopefully we can do that again this year. But that will be tough with those guys around here still.
“I never thought that I would be up for a Ballon d’Or until I was actually nominated. It shows a lot about how my career has been. My career has been different from the winner here, I came late, but I never gave up on my dreams.
“I had to work hard every step of the way, so to be here makes me very proud. And I want to work hard and be here again next year.”
The full list
- Lionel Messi (Barcelona and Argentina)
- Virgil van Dijk (Liverpool and Netherlands)
- Cristiano Ronaldo (Juventus and Portugal)
- Sadio Mane (Liverpool and Senegal)
- Mohamed Salah (Liverpool and Egypt)
- Kylian Mbappe (Paris St-Germain and France)
- Alisson (Liverpool and Brazil)
- Robert Lewandowski (Bayern Munich and Poland)
- Bernardo Silva (Manchester City and Portugal)
- Riyad Mahrez (Manchester City and Algeria)
- Frenkie de Jong (Barcelona and Netherlands)
- Raheem Sterling (Manchester City and England)
- Eden Hazard (Real Madrid and Belgium)
- Kevin de Bruyne (Manchester City and Belgium)
- Matthijs de Ligt (Juventus and Netherlands)
- Sergio Aguero (Manchester City and Argentina)
- Roberto Firmino (Liverpool and Brazil)
- Antoine Griezmann (Barcelona and France)
- Trent Alexander-Arnold (Liverpool and England)
20= Dusan Tadic (Ajax and Serbia)
20= Pierre-Emerick Aubameyang (Arsenal and Gabon)
- Son Heung-min (Tottenham and South Korea)
- Hugo Lloris (Tottenham and France)
24= Kalidou Koulibaly (Napoli and Senegal)
24= Marc-Andre ter Stegen (Barcelona and Germany)
28= Donny van de Beek (Ajax and Netherlands)
28= Joao Felix (Atletico Madrid and Portugal)
28= Marquinhos (Paris St-Germain and Brazil)