Luciano Spalletti's Zenit remain five points clear at the top of the table after their 2-1 win at relegation-threatened Ural on Saturday.
They were made to work hard for their triumph though, with Ural - who have won just one match this season - taking advantage of Hulk's early miss from the penalty spot.
Spartak Gogniyev put the hosts ahead just before the break but Zenit improved in the second half.
The leaders levelled proceedings in the 54th minute thanks to a Roman Shirokov strike and the midfielder then scored again to give his side all three points.
Shirokov's second came with 11 minutes remaining and gave Zenit their 11th win of the campaign.
Lokomotiv and Spartak - who are locked level on 30 points, five points adrift of Zenit - kept the pressure on with wins of their own.
Lokomotiv, who took the lead through Roman Pavlyuchenko, beat Rubin Kazan 2-1 on Sunday thanks to Dame N'Doye's late winner with just six minutes remaining.
Spartak extended their unbeaten record in home league matches to 13 with a 2-0 home win over Rostov on Saturday.
Yura Movsisyan fired them in front in the 15th minute with a penalty, before Argentinian Alberto Costa sealed the win in the second half.
Meanwhile, fourth-placed CSKA bounced back from three successive losses with a 5-1 thrashing of Krasnodar on Sunday, a result that was inspired by Zoran Tosic's hat-trick.
All of Tosic's goals came in a first half that striker Seydou Doumbia also scored in and, although Pavel Mamaev netted a consolation for the losers just after the break, there was still time for CSKA to score again.
Sergei Ignashevich scored the fifth in the 67th minute as CSKA climbed above their opponents and into fourth in the table.
At the other end of the table, Anzhi's search for their first win continued as they were beaten 2-0 by Kuban Krasnodar on Monday.
Romanian striker Gheorghe Bucur scored both goals for Kuban in the first half as Anzhi failed to build on a 1-0 UEFA Europa League success against Tromso on Thursday.
Strugglers Tom Tomsk and Terek Grozny played out a goalless draw on Saturday, a day that also saw Amkar Perm defeat Dinamo Moscow 2-1.
And on Friday, Artem Danilenko's 75th-minute strike helped Volga to a 2-2 draw at Krylya Sovetov.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.