But the striker admits that he move came as a bit of a surprise to him.
"I wasn't expecting this. After Saturday's game I said I would help Porto win a third title in a row. Suddenly my agent rang to say a deal was done," Hulk told the club's official website.
"I had no reasons to leave, but my agent called me and told that Porto and Zenit have reached a deal. This will be good for me, Porto and Zenit.
"This is another victory, yet another important step in my life. But I must say how grateful I am to Porto for opening the door to Europe. I was very happy in Portugal.
"I want to be happy at Zenit and in Russia as well. I want to keep moving in the same direction: winning matches and many titles as I did with Porto."
The 26-year-old signed a contract that will keep him with Zenit until the summer of 2017.