
The result still leaves Zenit six points clear of second-placed Krasnodar, who failed to capitalise on Zenit’s slip-up as they were also beaten 1-0 by visitors Akhmat Grozny.
CSKA Moscow, who beat Anzhi Makhachkala 2-0 on Friday, sit third, also on 19 points but having won less matches this season.
Behind them sit four clubs on 18 points with Lokomotiv, Rostov, Spartak, and Rubin Kazan all nicely placed for a tilt towards the top.
A goal by forward Fedor Černych was the deciding factor for Dynamo’s morale-boosting win over the leaders, which lifted the white and blues into 11th.
“It’s a very important win for us,” Dynamo head coach Dmitri Khokhlov said.
“We tried to play as aggressively as possible to give Zenit players no time and space and our plan worked perfectly today.”
Dynamo, who had lost their three previous league matches, looked likely to end their losing streak. They dominated the play and possession from the start by peppering Zenit goalkeeper Andrei Lunev with shots, though all were fruitless.
In the 37th minute Zenit were reduced to 10 men after their Argentinian forward Sebastián Driussi was sent off for a second bookable offence.
Dynamo besieged the visitors box but failed to find the net before the break.
Černych broke the deadlock in the 74th minute when he sent the ball into the net with a close-range header off a right-wing cross by Konstantin Rausch.
Zenit poured in attack seeking for an equaliser but Dynamo’s defence played well, while goalkeeper Anton Shunin performed a couple of impressive saves to keep his net clean.
Elsewhere, Krasnodar were testing a tough Akhmat defence from the kick-off but a combination of poor finishing and good goalkeeping by Yevgeni Gorodov left the game scoreless at halftime.
Brazilian midfielder Ismael Silva put Akhmat into the lead right after the hour mark by beating Krasnodar goalkeeper Andrei Sinitsyn with a powerful low shot from 23 metres out.
The hosts upped the tempo pinning Akhmat back but failed to save the day as their attacks still lacked accuracy and creativity.
“We knew that Krasnodar are very dangerous on the attack, so we sat back threatening them on the counter-attacks,” Akhmat coach Rashid Rakhimov said.
“After we scored, it became much easier for us. We created some more scoring chances but unfortunately failed to convert them. But in general it was a good match for us.”