In the stadium which hosted the France v Belgium World Cup semi-final in July, the drone smashed into the turf and broke into several pieces midway through the second half without hurting anyone.
The two teams' first 0-0 draw since September 2014 left Zenit top of the table, two points clear of Spartak, while Rostov, who played out a 1-1 draw with Rubin Kazan on Friday, sit one point further back in third.
"We're very upset with a draw," Zenit manager Sergei Semak said. "Of course we wanted to win. I'm very happy with my men's performance, they gave everything they had for the win. Unfortunately we failed to score today."
Zenit dominated play from the start at the Saint Petersburg arena in front of 61,500 crowd, a post-Soviet era record for the club, but Spartak's dogged defending thwarted the home side.
After the break Zenit continued to test their visitors but were frustrated by a combination of poor finishing and fine goalkeeping by Alexander Maksimenko.
"I'm happy with the result," Spartak boss Massimo Carrera said. "I'm always happy when my team don't lose the match.
"We tried to play aggressively but it's impossible to attack throughout the entire match. Today my men fought for every single ball and that's the spirit my team should have."
Elsewhere, Dynamo Moscow overcame visitors Orenburg 2-0 to go seventh.
Dynamo looked in command from the kickoff but failed to find the net until the 63rd minute when second-half substitute striker Yevgeny Markov re-directed a freekick by Kirill Panchenko from the left flank into the net with a header.
Forward Yevgeny Lutsenko added a goal in injury time to secure Dynamo's well-deserved win.
"That was the first match this season in which we played well from the beginning until the very end," Dynamo head coach Dmitry Khokhlov said.
"We knew that Orenburg are well-organised side but we put them under pressure and gave them no chance to create anything in attack. We won deservedly today."