Rodri, currently recovering from an ACL injury, wins the award ahead of Real Madrid stars Vinicius Jr and Jude Bellingham, along with City teammate Erling Haaland.
The 28 year-old won the Euros with Spain over the summer and also the Premier League and Club World Cup with City last season.
The decision has outraged Real Madrid, which boycotted the Paris ceremony on Monday.
“Winning the Ballon d’Or is the realisation of a dream and a genuine honour for me,” Rodri said on stage with his crutches.
“I have given so much to football, and to be rewarded this evening with the most revered individual prize in the game is something incredibly special for me and my family.
“However, individual prizes are so often the result of strong team performances, and I am eternally grateful to everyone at Manchester City.
“My teammates are the best – I could not ask for more from them, both personally and professionally – and the support I receive from across every department at the football club means I am given the opportunity to focus on my football and preform at my very best. I am very fortunate to be able call myself a Manchester City player.
“I also want to thank my family for their constant love and support. My career would not have been possible without them.
“I am humbled, honoured and very proud tonight. My focus now is returning to full fitness and pulling on a City shirt again.”