City had to come from behind to defeat the Serbian champions, but Julian Alvarez inspired a second-half comeback, with Rodri adding a third goal to put the game beyond doubt.
As expected, the reigning Champions were on top for large periods of the first half, recording 22 shots on goal, but it was Red Star Belgrade who went in at half-time with a shock lead.
With their solitary effort on goal, the Red-Whites opened the scoring just before the first half came to a close, after Osman Bukari beat Ederson in a one-on-one from the edge of the box, having been slipped through by Mirko Ivanic.
Few would have predicted Pep Guardiola's side going in a goal down at the break, but they were not behind for long, with Erling Haaland setting up Alvarez in the penalty area at the beginning of the second half, and the 23-year-old made no mistake from close range.
Kyle Walker thought he had completed City's turnaround minutes later, having found the back of the net after being played through by Rodri, but the right-back's effort was ruled out for offside, denying him what would have been his second-ever Champions League goal.
City did not need to wait long to complete their turnaround, however, with Alvarez bagging his second goal of the game after managing to beat Red Star Belgrade goalkeeper Omri Glazer at his far post with a free kick just before the hour mark.
With Barak Bakhar's side now chasing the game, the manager opted to make two substitutions, and sent on Peter Olayinka and Jean-Philippe Krasso, but the duo were unable to make the impact he was hoping for.
Having won the Champions League for Man City with his goal against Inter Milan in the final last season, Rodri again proved why he is in the Ballon d'Or conversation by scoring a remarkable goal, finding the bottom corner in style after being picked out by Phil Foden.
The Spaniard's goal put the game beyond doubt, with the Citizens holding on to secure a 3-1 victory, which means they are top of Group G after the opening game, although they have an identical record to RB Leipzig, who they play away from home at the beginning of October.