Manchester City and FC Porto settled for a goalless draw with both teams advancing to the Champions League stages with a game to spare.
Gabriel Jesus was thwarted by VAR - when the lines were eventually drawn, it was Rodri who was ruled offside - and Marchesin was in inspired form in the Porto goal but both sides will be happy with that result really.
It was a nice start for Porto as they had neat midfielder play, extending their first spell of possession but could not break City's back as they were eventually pushed back to the goalkeeper.
Just before half time, City almost took the lead from a freekick. Zinchenko delivered a beautiful free-kick inside the box, Rodri nodded back into the middle at the back post, but it was straight into a sea of Porto players, who cleared.
Ten minutes to stoppage time, City finally got the breakthrough, and it was Gabriel Jesus. Marchesin was absolutely superb and he did make a save but it didn't fall for him this time, giving the Brazilian chance to kiss the back of the net.
However, there was a quick VAR check and the goal disallowed as Jesus had been ruled offside in the build-up.
Match stats here.
Atletico Madrid 1-1 Bayern Munich
Elsewhere, Bayern Munich refused to go down as they forced a 1-1 draw with Atletico Madrid at the Wanda Metropolitan.
Madrid opened the lead in the 26th minute through Joao Felix. Llorente made a good run down the right flank and just kept the ball alive on the touchline. He clipped a cross towards Felix, who held his composure to steer his strike past Nubel.
Munich were handed a penalty after Muller was brought down by Felipe in the box. In the absence of Robert Lewandowski, Muller stepped up to take it and made no mistake, drawing Bayern level.
Match stats here.