Neither club disclosed the fee, but reports in the Spanish media claim Atletico will receive 8.5 million euros ($10 million) for the 24-year-old.
"Atletico Madrid and Zenit St Petersburg have reached an agreement for the transfer of Matias Kranevitter to the Russian side," Atletico said in a statement.
Kranevitter joined Atletico in December 2015 from River Plate, but made just 11 appearances for the Spanish giants in the 2015/16 campaign before being loaned out to Sevilla last season.