- Julián Álvarez (47', 60')
- Rodri (73')
- Osman Bukari (45')
Pep Guardiola's side dominated the opening period but were guilty of wayward finishing and trailed to a sucker-punch just before halftime as Osman Bukari broke clear to finish in style.
City began the game on a 26-match unbeaten run in Champions League home games and normal service was resumed almost immediately after the restart as Álvarez levelled after combining with Erling Haaland.
A misjudgement by Red Star keeper Omri Glazer allowed an Álvarez cross to go into the net on the hour and Rodri made it 3-1 with a clinical finish after 73 minutes as City made it 19 home wins in succession in all competitions.
Just over three months since City finally claimed Europe's biggest club prize with victory over Inter Milan in Istanbul they began their defence in ultimately comfortable fashion.
But for 45 minutes it looked as though it might be one of those nights as chance after chance went begging.
Once Argentina's Alvarez levelled in the 47th minute, however, only one outcome looked likely.
"The last two games I didn't know how many chances we missed," Guardiola said.
"We played really, really good but we were not able to score goals. We were consistent and in the end we won the game."
Norwegian goal-machine Haaland has now gone four Champions League games without hitting the net and he was guilty of some poor misses in a first half in which City's 22 goal attempts were the most in the competition since data began to be compiled.
He headed one effort wide, another even easier chance against the crossbar and then lashed a shot over.
But City switched off in the 45th minute and a ball forward sent Bukari through with only Éderson to beat.
The Ghanaian kept remarkably calm to place his shot beyond the City keeper but his joy was initially curtailed by an offside flag before referee Joao Pinheiro allowed it to stand after an intervention by VAR.
The 3,000 travelling Belgrade fans celebrated and City could hardly believe it as they headed off at half-time.
"I said 'guys, we cannot say we are playing bad. Forget the result, we are able to come back so go for it and be more calm'," the City boss said of his halftime team talk.
City did not take long to make amends though after the break as Alvarez played the ball in to Haaland and then showed great desire to sprint into the area and take a return pass before skipping around Glazer and slotting home in the blink of an eye.
Kyle Walker had a goal ruled out for offside before the otherwise excellent Glazer gifted the hosts their second goal.
Alvarez whipped in a right-footed cross with pace and Glazer flapped at thin air with the ball nestling in the net.
City began to toy with a flagging Red Star and wrapped up the points when Rodri, scorer of the winner against Inter in June, produced a deadly right-foot finish from the left side of the penalty area.
- João Pinheiro