A stunning 25-yard drive from Roman Eremenko saw Rubin Kazan steal a comeback 2-1 away win at Zenit St. Petersburg and hand the champions their first loss of the season Saturday.
Zenit stay top, but Spartak Moscow can overtake them if they beat Terek Grozny later Saturday.
Rubin go third, level on points with Spartak and one behind Zenit.
"I think that both in the second and first half we controlled the game well, but they scored from a penalty and then there was a distant shot, sometimes it happens," Zenit coach Luciano Spalletti said.
Zenit midfielder Viktor Failzulin gave the home team the lead on 25 minutes, outjumping Rubin defender Oleg Kuzmin to head in Vladimir Bystrov's cross.
Rubin responded early in the second half when they won a penalty against the run of play after Belgium defender Nicolas Lombaerts fouled Rubin midfielder Aleksandr Ryazantsev, and Premier League top-scorer Bibras Natkho grabbed his sixth goal in six games from the spot.
Finnish international Eremenko put his team ahead on 61 minutes with a powerful curling shot that left Zenit goalkeeper Vyacheslav Malafeev stranded.
The matchday marked anniversaries for both clubs, as Rubin coach Kurban Berdyev celebrated his 60th birthday and Zenit and Russia midfielder Roman Shirokov made his 100th appearance for the club.
Later Saturday, Spartak play Terek and FC Rostov take on Alania Vladikavkaz.
Sunday sees clashes between Amkar Perm and FC Krasnodar, CSKA Moscow and Krylya Sovetov, Anzhi and FC Mordovia.
The sixth round of games ends Monday when Petrescu’s former club FC Kuban host FC Volga.