Pep Guardiola’s men enjoyed the majority of the play but were unable to break down their well oiled and regimented hosts, who also secured their place in the Last 16 with a point.
In a first half of few chances, Ferran Torres thought he’d capped off a lethal counter with a poked finish, but the young Spaniard’s effort was deflected just wide by the onrushing Agustín Marchesín just after the 20-minute mark.
And it was a case of similarly fine margins fifteen minutes before the break when Raheem Sterling fired a low effort from a tight angle through a crowd of bodies, but Wilson Manafá was on hand to clear off the line at the far post.
Sterling once again went close just before the hour when his clever run forced a save from Marchesín, but Torres was unable to get the ball under his spell before the Porto defence recovered.
WATCH: Fernandinho’s a legend, says Zinchenko
However, the pick of our chances fell with 20 minutes to play, when Ruben Dias went agonisingly close to turning home the winner from a matter of inches following Sterling’s clever flick from a near post cross.
The centre-half’s outstretched leg inadvertently flicked the ball away from goal, and into the path of Torres, but the Spaniard’s overhead kick was thwarted by an incredible piece of acrobatics from the recovering Marchesín.
City thought they had finally found the breakthrough and got the win they deserved ten minutes from time when Gabriel Jesus reacted quickest on the rebound after his header had been tipped onto the bar.
But the goal was rightfully ruled out for an offside in the buildup after a VAR review spotted that Rodri had not quite got back in line in time.
Check out the best of the action via the gallery below…