Zenit saw their eight-match Russian Premier League winning streak end against Amkar Perm on Saturday, while Lokomotiv Moscow won well.
Luciano Spalletti's table toppers had not dropped a point in over two months as they prepared to face Amkar but, despite dominating the match, they could only claim a 1-1 draw.
Amkar have won just twice on the road in 2013 but both of those victories have come this season and they started well in St Petersburg, taking the lead in the 26th minute.
Defender Thomas Phibel was the unlikely scorer – his first goal in more than two-and-a-half years – as he smashed home after his initial header from a corner had been blocked by team-mate Georgi Peev.
Zenit quickly responded though, with midfielder Danny netting in the 38th minute for his 12th goal of the season in all competitions.
Spalletti's side piled on the pressure in the second half as they chased the victory but were unable to find a winner, despite having 11 efforts at goal.
Zenit still lead the league but their advantage was slashed to three points as second-placed Lokomotiv Moscow won 3-1 at city rivals Spartak Moscow on Sunday, in a game played behind closed doors as a result of unsavoury scenes in their midweek Russian Cup meeting with Shinnik Yaroslavl.
Defensive miistakes gifted goals inside the first 20 minutes to Dame N'Doye and Alexander Samedov to set Lokomotiv on their way, but Spartak responded in the 27th minute through Yura Movsisyan.
N'Doye wrapped up the win with 13 minutes to play though, as his seventh goal in eight matches extended Lokomotiv's unbeaten league run to eight matches.
Spartak remained in third – six points adrift of Zenit – despite their defeat, but have CSKA Moscow and Dinamo Moscow snapping at their heels after posting wins.
Fourth-placed CSKA came from behind to beat Volga 2-1 thanks to strikes from Seydou Doumbia and Zoran Tosic on Saturday, while on the same day Dinamo edged Tom Tomsk 1-0 courtesy of a Maksim Bordachev own goal.
At the other end of the table, rock-bottom Anzhi saw their search for a first win continue as Gerson Acevedo's injury-time strike gave Ural a 1-0 road win on Sunday.
Other results on Sunday saw Kuban Krasnodar edge neighbours Krasnodar 2-1 while Rubin Kazan and Rostov played out a goalless draw.
And on Monday, Sergey Kornilenko's goal gave Krylya Sovetov a 1-0 win at Terek Grozny.