The 25-year-old, who has scored seven goals in 29 internationals, signed a contract until 2020. No transfer fee details were disclosed.
Mak was part of Manchester City's academy before moving to Nuremberg and PAOK Salonika.
Zenit finished third in the Russian championship last season under Andre Villas-Boas.
(Reporting by Dmitriy Rogovitskiy; Editing by Tony Jimenez)
