The visitors jumped out into a 2-0 lead thanks to an Alexander Kerzhakov double inside 22 minutes but Nalchik pulled one back just before the break through Jovan Golic.

Roman Shirokov restored Zenit's two-goal cushion three minutes after the restart and it looked set to finish that way until Viktor Vasin grabbed a second for Nalchik with a minute remaining.

Second-placed Rubin Kazan lost ground on the leaders after a costly 2-2 draw at bottom side Sibir Novosibirsk.

Steve Joseph-Reinette put the lowly hosts into a surprise lead after 29 minutes but Rubin appeared on course to take all three points after responding with goals from Cristian Noboa (50pen) and Salvatore Bocchetti (80).

However, substitute Roman Belyaev secured a point for the hosts with the equaliser eight minutes from full-time.

Rubin ended the game with 10 men after Vitali Kaleshin picked up a second booking in stoppage time.

CSKA Moscow are third after Vagner Love hit both goals in a 2-0 win over Rostov, fourth-placed Spartak Moscow were 1-0 winners at Anzhi Makhachkala courtesy of Alexander Shyeshukov's 22nd-minute strike, and Lokomotiv Moscow climbed to seventh thanks to Dmitri Loskov's late effort in a 1-0 victory over Saturn Moscow.