Mircea Lucescu (70 ans) succède à ce poste au Portugais Andre Villas-Boas, dont le contrat n'a pas été renouvelé.
Le Zenit a terminé à une décevante troisième place en championnat, ce qui le prive de Ligue des champions la saison prochaine.
L'entraîneur roumain et le club russe ont signé un contrat de deux ans, avec une année supplémentaire en option, précise le communiqué.
Lucescu avait rejoint le Shakhtar Donetsk en 2004. Sous sa direction, le club ukrainien a remporté 22 trophées, dont huit championnats et l'Europa League en 2009.
Il avait annoncé son départ du Shakhtar en début de semaine, quelques jours après une ultime victoire en finale de Coupe d'Ukraine contre le Zarya Lougansk.