A six-year-old girl was among those killed, with 15 children among the wounded, mayor Oleksandr Lomako said. Forty-one people have been taken to hospital.
Ukrainian President Volodymyr Zelenskyy named the girl killed as Sofia.
“I am sure our soldiers will give a response to Russia for this terrorist attack,” Mr Zelenskyy said in his nightly video address, delivered early on Sunday at the end of a visit to Sweden. “A notable response.”
The strike hit the city's neoclassical theatre, tearing off the building's roof.
Debris was scattered across a square in front of the damaged theatre and surrounding buildings, where parked vehicles were heavily damaged, Reuters said.
A 63-year-old who only gave her first name, Valentyna, showed the damaged balcony in her apartment opposite the theatre.
“It is horrific. Horrific. There were wounded, ambulances and broken glass in here. A nightmare. Just a nightmare,” she said.
Mr Zelenskyy, who is on a trip to Sweden, said the Russian “terrorist state” had “turned an ordinary Saturday into a day of pain and loss”.
“I urge the world to stand up to Russian terror,” President Zelenskyy said in a message appealing for more military aid.
He arrived in Stockholm on Saturday morning for defence talks with the prime minister and a palace reception with the royal family.
King Carl XVI Gustaf and Queen Silvia will receive Mr Zelenskyy and his wife Olena during his brief visit to the Nordic country – his first since Russia invaded Ukraine last year.
The Ukrainian leader said he would also sit down with Prime Minister Ulf Kristersson for discussions on “partnership, defence co-operation, EU integration, and common euro-Atlantic security”.
“We have a broad agenda, but defence co-operation is one of the top priorities. Including powerful Swedish CV-90s,” Mr Zelenskyy wrote on X, formerly known as Twitter. “Our warriors are already putting them to good use on the battlefield. We also intend to produce them in Ukraine.”
Earlier, he issued a fresh call to the international community to get behind Ukraine as he shared a video of Russia’s latest assault on the country.
Mr Zelenskyy shared footage of the aftermath of the attack, which he said had struck buildings including a theatre and a university.
Debris could be seen strewn across pavements and multiple cars had their windows smashed and roofs dented. A body was seen in the driver’s seat of one vehicle.
“This is what it means to live next to a terrorist state,” Mr Zelenskyy wrote. “This is what we are uniting the entire world against.”
“I urge the world to stand up to Russian terror,” he added. “Provide Ukraine with additional tools to safeguard life. For life to win, Russia must lose this war.
Mr Zelenskyy said he and his wife “thank all Swedes who support Ukraine” as he announced his arrival in Sweden on the social media platform on Saturday morning.
Earlier this week, Stockholm said it was preparing to send £246 million ($313 million) of military aid to Ukraine. The package includes ammunition and spare parts for several of the platforms donated to Ukraine by Sweden, including CV90 armoured fighting vehicles and Leopard tanks.
The Swedish government said Mr Zelenskyy would meet Swedish government officials in Harpsund, about 120km west of Stockholm. He would also meet King Carl XVI Gustaf and Queen Silvia at a palace in the area.
Sweden abandoned its long-standing policy of neutrality to support Ukraine with lethal and non-lethal aid in its war against Russia.
It also applied for Nato membership but is still waiting to join the alliance.
A protester’s recent burning of a Quran outside a mosque in central Stockholm sparked anger and condemnation in Muslim nations and risked scuppering Sweden’s Nato accession.
Prime Minister Kristersson said he was “extremely worried” about the consequences of the act.
But in July, Turkey agreed to back Sweden’s bid to join the transatlantic military alliance, paving the way for membership.
Putin visits Rostov-on-Don
Meanwhile, Russian President Vladimir Putin visited top military brass in the Russian city of Rostov-on-Don near the Ukrainian border.
The Kremlin said he listened to reports from Valery Gerasimov, the commander in charge of Moscow’s operations in Ukraine, and other top commanders at the headquarters of Russia’s southern military district.
The exact timings of his visit were not confirmed, but state media published video footage that appeared to be filmed at night, showing Mr Gerasimov greeting Mr Putin and leading him into a building. The meeting was held behind closed doors.
It was the president's first visit since the Wagner mercenary group’s attempted mutiny in June, which saw its fighters briefly take control of Rostov-on-Don.
Ukraine claimed counteroffensive gains on the south-eastern front this week, regaining control of the village of Urozhaine in Ukraine’s eastern Donetsk region on Wednesday.
The leader of the Russian battalion fighting to maintain control of Urozhaine called for “freezing the front” on Thursday, claiming his troops “cannot win” against Ukraine.
“Can we bring down Ukraine militarily? Now and in the near future, no,” Alexander Khodakovsky said in a video posted to Telegram.
Overnight into Saturday, Ukraine’s air force said, it shot down 15 out of 17 Russian drones targeting Ukraine’s northern, central and western regions.
The deputy governor of the western Khmelnytskyi region, Serhii Tiurin, said two people were wounded and dozens of buildings damaged by an attack.
In the north-western Zhytomyr region, a Russian drone attack targeted an infrastructure facility and caused a fire, but no casualties were reported, said governor Vitalii Bunechko.