Raheem Sterling (right) came close to scoring with a low strike in the first half
Manchester City had a late goal against Porto ruled out but a draw was enough for them to secure top spot in Champions League Group C.
It seemed that after a frustrating 80 minutes substitute Gabriel Jesus had broken the deadlock when he tapped home after his initial header had been saved, but the effort was ruled out because Joao Cancelo was offside.
The rest of the match saw exceptional goalkeeper Agustin Marchesin and his deep-lying five-man defence soak up incessant pressure from Pep Guardiola's side, who came into the match having put five goals past Burnley at the weekend and with a 100% record in the group.
The Argentine keeper made three superb saves. He twice denied Spanish forward Ferran Torres, pushing one effort wide of the post in the first half before blocking a spectacular overhead kick after the break.
Porto's stopper also denied Raheem Sterling by rushing out to block his attempt on goal. The England winger went close again when he cut in and fired a low shot which was cleared off the line by Zaidu Sanusi.
The point also saw Porto qualify from the group.
City kept at bay by marvellous Marchesin
Agustin Marchesin (left) prevented Raheem Sterling from scoring in the second half
Guardiola was insistent in the build-up that his side were determined to win Group C with victory at Porto.
He recalled that the Portuguese champions had given his side a stiff test and physical workout during the 3-1 win at Etihad Stadium in October, and perhaps with all that in mind the Catalan coach picked a strong attack featuring Raheem Sterling, Phil Foden and the in-form Ferran Torres, who was seeking his fourth successive goal in the competition.
But Porto coach Sergio Conceicao also knew that if his team could somehow avoid defeat then his own side would also qualify to the knockout round. So it was no surprise when the home side set up a barricade in front of Marchesin, although the way the keeper performed he could have kept City to nil without a backline.
The Argentine's saves from Torres and Sterling were brilliant and also showed brilliant reflexes to push Jesus' initial header onto the bar before the Brazilian tapped home.
With Lady Luck on his side the goal was ruled out after replays showed Cancelo, who provided the assist, was offside by fractions in the build-up.
-- Courtesy of BBC Sport