With Russia hosting the 2018 FIFA World Cup next year, Putin told a meeting of sports officials that Zenit couldn't claim to be popularising football as a "truly Russian game" because it didn't give enough starts to Russian players.
When Zenit president Sergei Fursenko suggested more attractive styles of play could attract fans and make football "a real Russian game," Putin hit back.
"You've got eight foreigners running across the pitch, playing for Zenit in the Europa League, well done," the Russian president said in televised remarks, Apparently referring to Zenit's last UEFA Europa League group stage game against Spain's Real Sociedad.
Zenit started against Sociedad with three Russians, five Argentines, a Slovenian, a Serbian and an Italian. Three Russians came on as substitutes.
Zenit won 3-1, with two of its goals scored by Russian starter Alexander Kokorin, and the other by Argentine Emiliano Rigoni.
Russian league games allow six non-Russians on the pitch at any time.
In recent years, Russian officials have been keen for the country's clubs to develop local talent.
Despite occasional protests from coaches arguing that top Russians should consider playing abroad to gain experience at the highest level of the game, all of the country's 23-man squad for the FIFA Confederations Cup squad this summer played at home. That was unique among the eight teams in the tournament.
A year earlier, 22 of the 23 Russians picked for the European Championship played in the Russian league. Russia's 2014 World Cup squad was also entirely home-based.
Restrictions on foreign players in the Russian league have helped to drive up wages for Russian players, encouraging them to stay at home.