The 36-year-old, who was sacked as Spurs manager in December, will replace Italian Luciano Spalletti.
"Zenit has agreed terms on a contract with new head coach Andre Villas-Boas," the club said in a statement.
"Mr. Villas-Boas will be presented in St Petersburg as Zenit's new head coach on 20 March."
Spalletti was sacked after Zenit lost their Champions League round-of-16 first leg tie to Borussia Dortmund 4-2. Villas-Boas will assume the managerial reins a day after the second leg on Wednesday.