The stalemate was enough to ensure City progress to the knockout stage as Group C winners and we might have been celebrating victory on the night, only for Gabriel Jesus’ late goal to be disallowed.
The Brazilian tapped in 10 minutes from time after his initial header came back off the bar from Porto goalkeeper Agustin Marchesin’s save, but Joao Cancelo was ruled to be offside in the build-up after a VAR check.
City were in total control throughout against a side who were content to sit deep and soak up pressure.
The hosts were indebted to Marchesin, who twice denied Ferran Torres, including a point-blank save from an overhead kick, whilst Raheem Sterling had a low curling effort cleared off the line Zaidu Sanusi.
You can watch full-match replays of every men's first team game with a CITY+ subscription.