APOEL Nicosia became the first Cypriot side to qualify for the knockout stage of the Champions League as they dug in for a goalless draw at Zenit St Petersburg.
The visitors came under intense pressure at a freezing Petrovski Stadion, barely registering a shot on goal as they set out for a point, but clung on to remain top of Group G.
Zenit could face punishment from UEFA for an incident in the second half which saw referee Felix Brych take the players from the field because of smoke from a flare in the stands, but they remain favourites to join APOEL in the last 16.
The hosts dominated from start to finish.
In the 26th minute Alexander Bukharov broke well down the right and surged into the area, but he pulled the ball back when he could have shot and the chance was temporarily lost.
The ball broke to Roman Shirokov at an awkward height, and his volley was blocked by Marcelo Oliveira.
Bukharov should have done better after 31 minutes when he rose highest to meet Viktor Faitzulin's corner, but could only head straight at APOEL goalkeeper Rafael Urko.
In the 41st minute Faitzulin had an excellent chance of his own as the ball fell to him following a defensive error but his volley was kept out at point-blank range by the arm of Urko.
Bukharov had another chance on the stroke of half-time but again his header was wayward, slipping wide of the near post.
Domenico Criscito missed an excellent chance within two minutes of the restart when he hammered over the bar following an excellent lay-off from Danny.
Ten minutes into the second period, the referee called a temporary halt to proceedings as, for the second time in the match, the ground was engulfed in smoke thanks to a flare let off among the home fans.
When play resumed, second-half substitute Vladimir Bystrov announced his arrival when he headed against the bar, but he should have done better with the rebound which he screwed wide.
After 74 minutes, a lovely backheel flick from Bystrov played in Bukharov. Urko came out to smother the chance, but Bukharov, on the floor, still managed to poke the ball goalwards, only for Paulo Jorge to clear.
After a scramble in the area, the ball broke to Faitzulin, whose shot was blocked on the line, again by Paulo Jorge.
The siege continued as Danny curled a long-range effort on goal, which a back-pedalling Urko tipped over.
After those exertions, a late penalty shout, which Brych waved away, was all Zenit had left.