Roman Shirokov scored two goals and provided another to lead Zenit St. Petersburg to a 3-1 victory over 10-man FC Porto in their Champions League game on Tuesday.

The Portuguese champion took a 10th-minute lead when James Rodriguez tapped in a cross from Hulk.

But Zenit equalized 10 minutes later after Shirokov's shot deflected into the goal off of Jorge Fucile, who was sent off in the 45th after being shown a second yellow card.

Shirokov put the Russians ahead for good in the 63rd from a powerful left-footed shot before sending in a cross from the right nine minutes later for Danny to tap home.

Porto's first defeat on Russian soil in nine appearances allowed Zenit to join it on three points in Group G.

''Congratulations to my players,'' Zenit coach Luciano Spalletti said. ''We have played a great team. Our players were under psychological pressure in the first half and I asked them to go on the attack and be more aggressive. I think we could have won even if Porto had not been reduced (to 10 men).''

The visitors were in control early on, as Zenit struggled in possession in the first half.

Spalletti made only one change to his starting lineup from a 2-1 loss at APOEL two weeks ago, bringing in midfielder Viktor Fayzulin for the suspended Bruno Alves, who was sent off against the Cypriot side.

Porto turned to Rolando and Fernando Belluschi in place of Maicon and Steven Defour who played in a 2-1 win against Shakhtar Donetsk in the opening game.

Hulk rounded a defender on the right flank and broke into the box to set up Porto's opener.

''We scored and played well, but with one man down in the second half we conceded, as Zenit had applied pressure,'' Porto coach Vitor Pereira said.

''The result could have been different, should we not have been one man down. But we still have matches ahead and our team spirit will help us to reach our goal.''

Zenit recovered from going behind and scored on its first well-organized attack.

The visitors were forced into making an early substitution in the 33rd, with Silvestre Varela replacing Kleber after the forward injured his left shoulder in a collision with Igor Denisov.

Zenit opened strongly in the second half and dominated thereafter.

Striker Alexander Kerzhakov hit the post following Shirokov's pass in the 48th and had another chance two minutes later but Helton dived to save. Kerzhakov missed the target again in the 57th before Shirokov controlled Fayzulin's free kick with his right foot and immediately volleyed into the net.

Zenit wasted several more scoring opportunities, with Shirokov missing a chance for his hat trick in the 75th.

Porto saw Hulk's powerful free kick shave the post in the 65th and Joao Mountinho's low drive blocked by goalkeeper Vyacheslav Malafeev in the 77th.

Malafeev also saved Hulk's free kick in stoppage time.

Porto next hosts APOEL while Zenit will be at Shakhtar on Oct. 19.