FC Zenit took a firm grip on their UEFA Champions League play-off tie with FC Paços de Ferreira thanks to a Roman Shirokov hat-trick in Porto.

The hosts started strongly on their competition debut, but Zenit scored just before the half-hour when Shirokov directed Danny's cross into the bottom left-hand corner. Although André Leão equalised with a second-half header, Paços were only level for two minutes before Shirokov struck again and a late Matias Degra own goal and Shirokov's delightful third ensures the Russian side – bidding for a fourth group stage appearance – have the upper hand ahead of next week's return.

Paços began brightly, with Sérgio Oliveira trying his luck from distance only to be denied by a smart Yuri Lodygin save low to his left. The 21-year-old midfielder went close again soon after with a swerving effort that flew narrowly wide, but it was Luciano Spalletti's visitors who broke the deadlock in the 27th minute. Danny raced down the left and delivered a low cross which came all the way to Shirokov, who placed his shot precisely into the bottom left-hand corner.

Sérgio Oliveira and Shirokov exchanged attempts at goal at the start of the second half before Paços grabbed an equaliser in the 58th minute. Ricardo's header deflected off Shirokov and fell for André Leão to head in. Parity did not last long, though, as a low Zenit corner evaded both Nicolas Lombaerts and the Paços defence at the front post and arrived at Shirokov's feet for an easy finish from close range.

Paços remained undeterred and Sérgio Oliveira went close again before Lodygin's heroics kept out a Carlão header, yet Zenit made Costinha's men pay for their missed opportunities. Aleksandr Kerzhakov's curling free-kick came back off the crossbar and hit Degra before rolling over the line. Then the impressive Shirokov found space on the edge of the area in the 90th minute and unleashed an unstoppable strike into the top-left corner to give Zenit a three-goal cushion and leave Paços facing a mission improbable.