At least 16 people, including a child, were killed in the blast, which took place on a busy market street in the middle of the day - a rarity.
Kostyantynivka, in Ukraine’s eastern Donetsk region, is near the front line.
At least 28 people are thought to be injured. A market, shops and a pharmacy are all reported to have been hit.
Mr Zelensky, who has blamed Moscow, said those killed were “people who did nothing wrong” - and warned the death toll could increase.
“All services are working,” Ukrainian Prime Minister Denys Shmyhal assured residents, adding: “The fire is contained.”
Bastards.