Porto, Portugal: Zenit St Petersburg are through to the last 16 of the Champions League at Porto's expense after holding the Portuguese club to a goalless draw at the Estadio do Dragao here on Tuesday.
Zenit knew a point would be enough for them to qualify for the knockout stages for the first time, and despite rarely troubling home 'keeper Helton, they defended stoutly and deservedly progress.
However, one point was not enough for them to finish ahead of APOEL Nicosia, the Cypriot club winning Group G by virtue of a better head-to-head record despite losing their final game at home to Shakhtar Donetsk.
Porto had to win the match but lacked imagination and must instead settle for parachuting into the Europa League, where they will get the chance to defend the trophy they won in Dublin last May.
Luciano Spalletti's Russian side are currently on their winter break, and had spent the last week preparing for this decisive encounter on a training camp in the Algarve.
Top of the Russian league, and unbeaten in 14 matches in all competitions, they were always likely to provide stern opposition for their hosts, who lie second in their domestic league behind Benfica.
Porto started brightly, and might have taken the lead inside the opening ten minutes, but Djalma's effort was well saved by Vyacheslav Malafeev in the Zenit goal.
Despite their attacking set-up, Porto rarely looked capable of prising open the visitors' backline, and the half-time whistle was greeted with loud jeers by the home support.
Vitor Pereira's side again enjoyed almost total territorial dominance after the restart, but once again struggled to create chances, and after a Hulk shot flashed across the face of goal in the 50th minute it was not until the final quarter of an hour that Malafeev was forced into another save of any real note.
The 32-year-old produced a decisive stop from Colombian winger James Rodriguez, and that miss left Porto players and fans realising that it wasn't to be their night.