Ukrainian regional governor Maksym Kozytskyy said 35 people were killed and 134 wounded in the attack on the Yavoriv training base, near a major crossing point into Poland used by refugees from the conflict.
Russia said it had attacked the facility, adding the strike had killed "up to 180 foreign mercenaries" and destroyed a large amount of weapons supplied by outside nations.
Defence ministry spokesperson Igor Konashenkov told a briefing that Russia would continue its attacks against what he called foreign mercenaries.
Russia fired around 30 cruise missiles at the base, also known as the International Peacekeeping and Security Center, outside the city of Lviv, early Sunday, the local governor said.
Hours after the attack, ambulances were still rushing to the scene.
Roads leading to the facility were blocked with checkpoints and authorities were conducting search and rescue operations.
Authorities in Lviv said most of the missiles were intercepted by the air defence system.
Video of the aftermath of the attack posted online and verified by the BBC showed a huge crater at the site and thick smoke billowing from a massive fire at a small building nearby.
Dukhnych Vitalii, a 19-year-old student who lives in a nearby apartment complex, said "the night sky turned red" as the attack happened. "We can't hear the air raid sirens in this area. We woke up when we heard the sound of the first explosion. We went to the bunker," he said. "It looked scary."
His 25-year-old cousin was training at the facility, Mr Vitalii said, and his family were still trying to contact him.
Another resident, Nadin Berezovska, said she could see the fire from her parents' flat, where she had been living after fleeing the country's capital, Kyiv. "It was very scary. We're in shock," Ms Berezovska, a 39-year-old photographer, said.
"Now we realise that it doesn't matter where you live," she said. "We aren't safe. How can Poland be safe?"
The base has previously been used for military training of Ukrainian troops, often with instructors from the US and other Nato countries. It was not immediately clear whether foreign instructors were at the centre when it was hit.
The attack is significant because the base, one of Ukraine's largest military facilities, is located just 25km from Poland, a Nato member. The border with Poland is a vital route for refugees, but also for weapons being sent by countries in the military alliance - which have included anti-tank and anti-aircraft missiles.
It is also the first major attack in western Ukraine since Russia launched its invasion of the country, on 24 February. The region has become a hub for millions of people escaping the war in other areas of the country. Around 2.6 million have left Ukraine so far.
"We're very scared," Yurii Vitiv, a 50-year-old driver, said. "Until this morning we had hoped that the war would stop on eastern Ukraine."
Hours earlier, Sergei Ryabkov, the Russian deputy foreign minister, said Moscow had warned the US that "pumping weapons from a number of countries it orchestrates isn't just a dangerous move, it's an action that makes those convoys legitimate targets".
Despite sending weapons, Nato has, so far, ruled out a request by Ukraine's government to establish a no-fly zone over the country, saying this would trigger a wider conflict with Russia.
But Andriy Sadovyy, the mayor of Lviv, said such a measure was necessary to prevent Russia from carrying our aerial strikes.
"Europeans, understand this situation: it's easy to talk and drink coffee and say they're deeply concerned... but every hour the skies are not closed, the Russians are killing civilians and children," he told the BBC in an interview.
"We need closed sky. We need decision today. We need bullet-proof vests today, not tomorrow. Tomorrow Russian missiles [will] end up in the European Union."
Ms Berezovska, the photographer, agreed. "In Ukraine, there's no place to hide," she said. "We ask Nato to close the sky."