Arshavin made 144 appearances for Arsenal, scoring 31 goals in his five seasons at the club, but failed to live up to his billing following a 15 million-pound move from Zenit in 2009 and spent part of the 2011/12 season on loan at the Russian club.
The 32-year-old has signed a two-year contract with Zenit.
"One of Russia's best football players of the last decade is returning to his hometown," Zenit said in a statement on their official website.
"Zenit football club welcomes the return to Andrei Arshavin to St Petersburg and wishes the athlete new success in the squad."
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.