The 31-year-old is now one behind Barcelona's Messi, who took the honor for a fifth time last year, BBC reported.
Atletico Madrid's French forward Antoine Griezmann finished third in the vote.
Ronaldo helped Real Madrid win last season's Champions League and scored three goals as Portugal won Euro 2016.
He has now won the Ballon d'Or in 2008, 2013, 2014 and 2016, with Messi the only other recipient of the award since winning it for the first time in 2009.
"I never thought in my mind that I would win the Golden Ball four times. I am pleased. I feel so proud and happy," said Ronaldo.
"I have the opportunity to thank all of my teammates, the national team, Real Madrid, all of the people and players who helped me to win this individual award."
The former Manchester United forward has scored 19 goals in 20 games for club and country this term, to add to the 54 he got last season.
Ballon d'Or winners
The winners of the soccer world’s most prestigious individual award since 2003 are Pavel Nedved (2003), Andriy Shevchenko (2004), Ronaldinho (2005), Fabio Cannavaro (2006), Kaka (2007), Cristiano Ronaldo (2008, 13, 14, 16) and Lionel Messi (2009, 10, 11, 12, 15).
Ronaldo's Real Madrid teammate Gareth Bale finished sixth in the vote, while Leicester City striker Jamie Vardy — the only Englishman included on the 30-player shortlist — was eighth.
The Ballon d'Or is voted for by 173 journalists from around the world.
It has been awarded by France Football every year since 1956, but for the past six years it became the FIFA Ballon d'Or in association with world football's governing body and was awarded to the world's best player.
However, FIFA ended its association with the award in September.
FIFA will hand out its own prize for the world's best men's player, along with the best women's player and team of the year, at the Best FIFA Football Awards ceremony in Zurich on 9 January.
Ronaldo's 2016 in numbers
- 42 games, 38 goals, 14 assists
- Third best minutes-per-goal rate — 83.68 — of anyone scoring a minimum of 10 goals across Europe's top five leagues during 2016, behind Luis Suarez (82.57) and Falcao (59.6)
- Directly involved in 39 La Liga goals in 30 games — 31 scored and nine assists
France Football counted down the ranking on their Twitter feed, starting with West Ham's Dimitri Payet and Real Madrid teammates Toni Kroos and Luka Modric, who finished joint 17th in the vote.
They got down to announcing Bale in sixth at around 19:00 GMT before suddenly jumping to the winner and completely missing out fifth to second.
Seventy minutes after Ronaldo was confirmed as the latest recipient of the Ballon d'Or, Messi finally discovered that he had finished as runner-up.
After being selected as the Ballon d'Or winner, Ronaldo said his victory celebrations have been tarnished by allegations of tax fraud.
He said the allegations were hard to bear for himself and his loved ones.