The 26-year-old, who was recently heavily linked with a move to Chelsea, has put pen to paper on a deal which will keep him at the Petrovsky Stadium until 2017.
Zenit have not disclosed the transfer fee but reports claim they splashed out €50 million (£39.6 million) to secure Hulk’s services.
The former Tokyo Verdy player, who played a key role in Porto’s Europa League title-winning campaign in 2010-11, has been capped 13 times by Brazil since making his international debut in 2009.