He said on the Telegram messaging app that a market, shops and a pharmacy had been hit in the town in Ukraine’s eastern Donetsk region, near the front line.
“This Russian evil must be defeated as soon as possible,” Mr Zelensky added.
"When someone in the world still attempts to deal with anything Russian, it means turning a blind eye to this reality. The audacity of evil. The brazenness of wickedness. Utter inhumanity."
He later told a press conference in Kyiv that he believed it had been a deliberate attack on "a peaceful city".
"This is one more terrorist attack by the Russian Federation. They deliberately hit the market," he said.
Among the dead is a child, Prime Minister Denys Shmyhal said. At least 32 people were wounded, according to Internal Minister Ihor Klymenko.
Emergency service workers extinguished the fire that damaged about 30 pavilions at the outdoor market, Mr Klymenko added.
Police said the market had been crowded when it was hit at around 2.00pm (11am GMT), and that nearly 30 shopping kiosks, an apartment block, a bank and cars were damaged.
The search and rescue operation in Kostyantynivka has been completed, Interior Minister Ihor Klymenko wrote on Telegram.
Journalists at the site of the attack described seeing covered bodies on the ground and emergency workers extinguishing fires at market stalls, with blackened and mangled cars nearby. Emergency crews searched the rubble for any trapped civilians.
Kostiantynivka, which had a population of about 70,000 before Russia’s invasion 18 months ago, is about 30 km (19 miles) from the devastated city of Bakhmut, where fighting has been heavy for months.
The attack coincided with a visit to Kyiv by US Secretary of State Antony Blinken who was expected to announce more than $1 billion in new American funding.
He was expected to meet with President Zelensky and other top officials to discuss the ongoing counteroffensive and reconstruction efforts.
On the train journey to Kyiv, Blinken met with Danish Prime Minister Mette Frederiksen, also on an official visit, to discuss the war.
Blinken thanked her for Denmark's leadership in a coalition training Ukrainian pilots on F-16s and for promising to donate the fighter jets to Ukraine, according to State Department spokesperson Matthew Miller.
Russia did not immediately comment on the attack, and has denied deliberately targeting civilians. The Kremlin had earlier on Wednesday said of Blinken's visit that Moscow believed Washington planned to continue funding Ukraine's military "to wage this war to the last Ukrainian".