Roman Shirokov scored two and made a third for Zenit St. Petersburg in a 3-1 Champions League win over 10-man Porto on Wednesday.
Shirokov netted an equalizer on 20 minutes after James Rodriguez had put the visitors ahead with a 10th-minute tap-in.
Porto fell to pieces after they had Jorge Fucile sent off for a second yellow card offense on the stroke of half time.
Shirokov put Zenit ahead on 65 minutes, deftly controlling a free kick from Victor Fayzulin, and smashing a volley past a helpless Helton in the Porto goal.
Zenit playmaker Danny made it three on 72 minutes after Kerzhakov latched onto a long ball from Shirokov, drove into the box and crossed for the Portuguese to convert.
The result lifts Zenit off the bottom of Group G after their 2-1 shock defeat to Cypriot minnows APOEL earlier this month. Porto remain on three points.
"I got lucky that I scored two. Our defense was key to the victory," Shirokov said.
Zenit coach praised his side for their "intensity."
"Of course we had the advantage after the sending off, but we made full use of this advantage throughout the duration of the second half," he said.
Porto started the more brightly than than their hosts.
Hulk tried to catch out Vyacheslav Malafeyev by directing a 7th minute free kick at goal rather than crossing, but found the side netting.
Roman Shirokov headed over for Zenit's first attempt on goal.
Malafeev then flew to his right to tip over a stinging drive headed for the top corner from Alvaro Pereira on 24 minutes.
Hulk flashed a long-range effort wide five minutes before the end of the first half.
Kerzhakov directed a tame header straight at Helton, and Danny went close as Zenit ended the first half in the ascendancy.
Fucile was dismissed by English referee Howard Webb just before the whistle for handling the ball, a second yellow card offense after an earlier foul.
Zenit were a whisker away from a second when the game restarted; Kerzhakov beat the offside trap to smash an effort against the inside of the post.
The Russia international sliced horribly wide when through on goal, then hooked an effort the other side as Zenit turned the screw on the hour mark. Kerzhakov even had the ball in the net but it was ruled out for offside.
Helton got his fingertips to yet another Kerzhakov effort in the 70th minute as Porto went to pieces at the back.
Shirokov missed a hat-trick chance on 75 minutes, shooting over after his header rebounded off the goalkeeper.
Danny sailed a shot wide from the edge of the area before Zenit ran down the clock with Malafeev saving a last-minute free kick from Hulk.