Three children were among the dead, according to Ukrainian authorities.
Ukraine's military said Vinnytsia, a city about 200 km southwest of the capital Kyiv, was hit by three Russian Kalibr cruise missiles fired from an unnamed submarine.
Police said the wounded included about 50 people who were seriously hurt and that 15 others were unaccounted for, the Reuters news agency reported.
"Cruise missiles hit two community facilities, houses were destroyed, a medical centre was destroyed, the cars and trams were on fire," President Volodymyr Zelensky said.
In a remote address to an international conference in the Netherlands, he described the strike as an "act of Russian terror."
Ukrainian Deputy Defence Minister Hanna Malyar told reporters in Kyiv that the attack was "more evidence of genocide" by Russian forces in Ukraine, according to Reuters.
"Russia continues to fight against Ukrainian civilians, continues to kill our children," she said, as quoted by Ukraine's Ukrinform news agency.
"Today's attack on Vinnytsia is further proof of genocide against the Ukrainian people," she added. "The whole world sees that Russia has turned into a killer country. And such a state has no place in our world in the 21st century."
Foreign Minister Dmytro Kuleba in a tweet accused Russia of committing "another war crime."
In a separate tweet, he said: "This is terrorism. Deliberate murder of civilians to spread fear. Russia is a terrorist state and must be legally recognized as such."
Polish Foreign Minister Zbigniew Rau said on Thursday that "war criminals will be brought to justice and sentenced."
He was speaking in the Hague in the Netherlands, where he attended the “Accountability for Ukraine: Enhancing Coordination of Action to Deliver Justice" conference aimed at prosecuting war crimes committed in Ukraine.
(gs)
Source: PAP, Reuters, ukrinform.net, Nexta, kresy24.pl