Indiscriminate rocket fire slammed into a market, two schools, homes and shops in the eastern Ukrainian city of Mariupol, killing at least 29 people, authorities said.
Ukraine's top rebel leader said an offensive had begun on the strategically important port.
Ukraine's president called an emergency meeting of his military officials and cut short a trip to Saudi Arabia to rush back to coordinate the government's response.
The rocket attacks came a day after the rebels rejected a peace deal and announced they were going on a multi-prong offensive against the government in Kiev to vastly increase their territory.
The rebel stance has upended European attempts to mediate an end to the fighting in eastern Ukraine, which the UN says has killed nearly 5,100 people since April.
Mariupol, which lies on the Azov Sea, is the major city between mainland Russia and the Russia-annexed Crimean Peninsula. Heavy fighting in the region in the fall raised fears that Russian-backed separatist forces would try to take over the government-held city to establish a land link between Russia and Crimea.
Ukraine's Defense Ministry said there were three separate strikes from Grad multiple-rocket launchers on Mariupol and surrounding areas.
The area that came under attack was massive," Mariupol mayor Yuriy Khotlubei said. "The shelling was carried out by militants. This is very clearly Russian aggression that has caused terrible losses for the residents of the eastern part of our city."
A Ukrainian military checkpoint on a road out of the city toward rebel-held areas was also hit and one serviceman was killed, the Defense Ministry said.