Luciano Spalletti's table-topping side has raided Portugal for two of the league's most sought-after players.
The 26-year-old Hulk will wear the No. 29 shirt for Luciano Spalletti's side, which currently sits 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 No. 28 jersey.
"It's now official. Both players had signed five-year deals," Zenit spokesman Dmitry Tsimmerman was reported as saying by Rueters.
"We were trying to sign them before the Sept. 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 Os Dragoes 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 the Selecao's Olympic team that claimed silver in London.
Witsel, meanwhile, had been heavily linked with a summer 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.
The St Petersburg club has been drawn against AC Milan, Anderlecht and Malaga in the Champions League.
Follow GOAL.COM USA on