Each club must also pay a 500,000 rouble (£10,000) fine for the crowd trouble at the Khimki arena in suburban Moscow, the FA said on its website.
Late in the first half with Dynamo leading 1-0, the referee stopped the match after one of the missiles, thrown by the Zenit supporters, landed near Dynamo keeper Anton Shunin.
The Russia international suffered burns to his cornea in both eyes and some loss of hearing in his right ear.
Champions Zenit were also ordered to play their next two home games at an empty arena. They host league leaders CSKA Moscow on Monday before facing second-placed Anzhi Makhachkala at St Petersburg's Petrovsky stadium next month.
It is a huge blow to Luciano Spalletti's team, currently in third place, in their bid to retain their league title as they now trail CSKA by six points midway through the season.
Dynamo, who climbed to 10th following a dreadful start to the season, will play one home game without any spectators.
"It's a very questionable decision. It doesn't take into account some important details. Therefore we plan to appeal," Zenit general director Maxim Mitrofanov told reporters.
Earlier, Mitrofanov threatened to pull his team out of the championship in case of "unfair penalty".
"First, we must get a written copy from the FA, explaining their reasoning. Then, we'll decide," he said on Thursday.
The big spenders, owned by Russian energy giant Gazprom, also went out of the Champions League after being held to a 2-2 home draw by already qualified Malaga on Wednesday.