Zenit's unbeaten start to the Russian Premier League came to an end after a surprising 3-1 defeat at the hands of Terek Grozny on Saturday.
Ailton Almeida's double and Igor Lebedenko's third of the season gave Terek a 3-0 lead just after the hour and, although Aleksandr Ryazantsev pulled a goal back, Andre Villas-Boas' side fell to their first loss of the league campaign.
Luckily for Zenit their advantage at the top remains seven points after second-placed CSKA Moscow also fell to defeat, losing 1-0 to city rivals Dinamo.
Aleksandr Kokorin's sixth league goal of the season was enough to separate the two sides and their margin of victory could have been greater had Mathieu Valbuena not missed a first-half penalty.
CSKA's slip means there are now six sides, including Dinamo, within three points of second place.
Krasnodar head that group after bouncing back from last week's defeat to Mordovia Saransk with a 2-0 win over Rubin Kazan.
Sergej Petrov gave Oleg Kononov's side an early lead with a powerful shot past Sergei Ryzhikov at the near post, with Ricardo Laborde doubling their advantage with 18 minutes to go, following a swift counter-attack.
Terek occupy fourth, with Kuban into fifth thanks to a first league win since mid-September, beating Ural 1-0 courtesy of Danilo's 31st-minute penalty.
Lokomotiv Moscow piled more misery onto Torpedo with a 1-0 win, the latter's ninth game without a win, while Spartak Moscow beat bottom club Arsenal Tula 2-0 with goals from Yura Movsisyan and Quincy Promes.
Mordovia continued their climb up the league table with a second-successive triumph, Viktor Vasin sealing all three points for Yury Semin's side against Amkar Perm.
Meanwhile, strugglers Ufa and Rostov failed to pull clear of the bottom two as they played out a goalless draw at the Zvezda Stadium.