The veteran anchorman, who can also play in defence, has signed a two-year contract with the club he left in 2009.
“After a triumphant season, I will continue my career with the club where I first experienced success,” Tymoschuk said on his website.
“Despite offers from around the world, I have signed a two-year contract with Zenit starting on July 1.
“I hope to achieve more success here.”
The 34-year-old, who has also played for Shakhtar Donetsk, played 132 matches for Bayern, scoring six goals and winning two Bundesliga titles and this season’s Champions League.