Had very little to do in the opening half as Zenit rarely threatened, but was called into action after the break, saving well three times from Hulk before conceding late on.
The Argentine was strong alongside Mangala at centre-back, and was particularly dominant in the air. Made one big mistake in the second half to allow Hulk a clear run at goal.
Fulfilled the cliche of an attacking Brazilian full-back superbly for the hosts, as he overlapped to good effect and caused Ansaldi problems.
With some of Europe's top clubs circling, the young Frenchman was a rock at the heart of his side's defence before Kerzhakov stole all three points with a late header.
See Danilo. Like his Brazilian counterpart he was dangerous pushing forward, though less solid defensively. He struggled against Hulk, and it was from that side that the Zenit man provided the assist for Kerzhakov.
The Argentine will have wanted to remember this game, his Champions League debut, forever. He will, but not for the right reasons. Sent off for two bookings in quick succession in the fifth and sixth minute.
Surprisingly withdrawn shortly after the break after impressing for the home side. Was full of running and did well to stretch Neto and Lombaerts.
Marvellous in central midfield for the home side. He struck the crossbar with a fine effort in the first half and sprayed some fine passes about before being withdrawn late on.
Industrious in midfield alongside Lucho, putting in some vital tackles and moving the ball quickly on to his more attack-minded teammates.
Whipped a free kick just over in the 13th minute and showed similar promise from other set pieces. Despite this his passing was sloppy at times and he was taken off midway through the second half.
The imposing forward did not really settle in this game, as he gave away a series of free kicks for fouls on Zenit's centre-back pairing of Neto and Lombaerts.
Produced some decent stops to preserve his clean sheet, but was also helped out by the woodwork, which came to his rescue twice.
The reliable right-back showed more restraint than Ansaldi on the other flank, as he reined in his attacking instincts to try and limit the threat of Lica and then Varela.
Was pushed around by Martinez early in the game but he recovered from that to put in a sturdy performance at the back. Won a number of key aerial duels in the second half.
Bombed forward well on the left-hand side for the visitors and was one of the only Zenit players to really try and support Hulk in attack for much of the game.
Composed at the back for Spalletti's men as they seemed to invite pressure on themselves following Herrera's early sending off. Handled the threat of Martinez well.
Put in a determined shift in holding midfield for the visitors as he was often left to make amends for the wayward passing of Zenit's attacking midfielders.
Like Faizulin, he was forced to dive in to some challenges to stop dangerous Porto attacks after the likes of Danny and Shirokov had gifted the home side possession. A decent showing.
Subbed off in the 71st minute after a blunt performance for the away team. Looked off the pace and unaware what was necessary of him as he kept giving the ball away.
Put in a surprisingly disappointing performance against his former side, when many would have thought he would have strived to shine. Fortunate to last the full game.
Hauled off shortly after half-time after yet another uninspiring display. His night was summed up when he played a simple pass straight to Otamendi under no pressure whatsoever.
Took the game by the scruff of the neck while many of his team-mates shirked their responsibilities. One of his best performances for the club since joining from Porto last year. Set up Kerzhakov for the winner with a superb cross.
Introduced at the expense of Josue in the 74th minute, but did little apart from give away a couple of free kicks.
Brought on late on but had no time to leave his mark.
Replaced Lica in the 52nd minute and nearly had an immediate impact on the game as he burst into the area and dragged a shot just wide. Struck the bar with a fine effort late on..
Introduced with 10 minutes to go and won some crucial headers as Porto poured forward in search of an equaliser late on.
Replaced Arshavin and immediately offered more than the former Arsenal man by linking well with Hulk.
Introduced late on and made the difference by nodding Hulk's cross past Helton to secure all three points.