City had already secured passage to the knockout round after beating Olympiakos last week.
But the result against Porto means they finish top of Group C, three points ahead of the Portuguese giants.
Porto goalkeeper Agustin Marchesin was in imperious form, pulling off three magnificent saves to deny a frustrated City outfit.
Pep Guardiola's side ended the game with 18 shots, 6 of which were on target.
It is the first time Guardiola has seen his team draw 0-0 in the Champions League since February 2015 when manager of Bayern Munich.