Hulk, Witsel head to Russia
Brazilian international, Hulk, 26, will wear the number 29 shirt for Luciano Spalletti's side, who currently sit top of the Russian Premier League after seven games.
Hours after announcing a deal for the Brazilian, Zenit also confirmed the signing of Belgian midfielder Witsel, who will take the number 28 jersey.
"It's now official. Both players had signed five-year deals," Zenit spokesman Dmitry Tsimmerman said.
"We were trying to sign them before the September 3 deadline for the Champions League so they can play for us in that competition as well as the Russian league."
Having cut his teeth in Japanese football with Kawasaki Fontale, Consadole Sapporo and Tokyo Verdy, Hulk moved to Porto in 2008 and helped the club to three league titles, three Tacas de Portugal and the UEFA Cup.
He has won 13 Brazil caps since making his debut in 2009, and was part of their Olympic team that claimed silver in London.
Witsel, meanwhile, had been heavily linked with a move to Real Madrid, but the former Standard Liege man, who has represented Belgium at every age group, has now made the move to Zenit.
Benfica confirmed on their official website that the fee paid for their prized asset was the contractual release clause of 40 million euros.
The St Petersburg club have been drawn against AC Milan, Anderlecht and Malaga in the Champions League.