Russian missiles hit Ukraine's port of Odessa Saturday, in what Kyiv called a "spit in the face" of a day-old deal between the warring sides to resume cereal exports blocked by the conflict.

The Ukrainian military said its air defences had shot down two cruise missiles but two more hit the port, threatening the landmark agreement hammered out over months of negotiations aimed at relieving a global food crisis.

Main ports in the Black Sea region, including Ukrainian ports blocked by Russian forces
Main ports in the Black Sea region, including Ukrainian ports blocked by Russian forces AFP / Emmanuelle MICHEL

The Ukrainian foreign ministry spokesman said the strike was "a spit in the face" by Russian leader Vladimir Putin against the deal brokered by Turkish President Recep Tayyip Erdogan and United Nations chief Antonio Guterres.

Ukrainian President Volodymyr Zelensky claimed the strikes on Odessa showed Moscow could not keep its promises.

"This proves only one thing: no matter what Russia says and promises, it will find ways not to implement it," he said during a meeting with US lawmakers, according to a statement from the presidency.

The grain deal should help relieve acute hunger that has affected tens of millions of people because of the war
The grain deal should help relieve acute hunger that has affected tens of millions of people because of the war AFP / OZAN KOSE

Odessa is one of three export hubs designated in the agreement and Ukrainian officials said grain was being stored in the port at the time of the strike although the food stocks did not appear to have been hit.

Guterres -- who presided over the signing ceremony on Friday -- "unequivocally" condemned the attack, his deputy spokesman said, and urged all sides stick to the deal.

"These products are desperately needed to address the global food crisis and ease the suffering of millions of people in need around the globe," he said.

Ukraine has mined and barricaded its Black Sea ports to avert a Russian amphibious assault
Ukraine has mined and barricaded its Black Sea ports to avert a Russian amphibious assault AFP / Oleksandr GIMANOV

The EU's foreign policy chief Josep Borrell directly blamed Russia for the strikes.

"Striking a target crucial for grain export a day after the signature of (the) Istanbul agreements is particularly reprehensible and again demonstrates Russia's total disregard for international law and commitments," he said.

UK Foreign Secretary Liz Truss said the attack was "absolutely appalling" and "completely unwarranted".

Russian forces are pressing deeper into the Donbas war zone of east Ukraine, destroying towns such as Siversk along the way
Russian forces are pressing deeper into the Donbas war zone of east Ukraine, destroying towns such as Siversk along the way AFP / Anatolii Stepanov

There was no official comment from Moscow but Turkish Defence Minister Hulusi Akar said Russia had denied carrying out the attack.

"The Russians told us that they had absolutely nothing to do with this attack and they were looking into the issue very closely," Akar said in comments to state news agency Anadolu.

"We will continue to fulfil our responsibilities under the agreement we reached yesterday," he added.

Russia is trying to fight deeper into the war zone's Donetsk region after securing full control of neighbouring Lugansk
Russia is trying to fight deeper into the war zone's Donetsk region after securing full control of neighbouring Lugansk AFP / Sergei CHUZAVKOV

Regional governor Maksym Marchenko said the strikes left people injured and damaged port infrastructure in Odessa, without specifying the number or severity of the injuries.

Russian forces are pressing deeper into the Donbas war zone of east Ukraine, destroying towns such as Siversk along the way
Russian forces are pressing deeper into the Donbas war zone of east Ukraine, destroying towns such as Siversk along the way AFP / Anatolii Stepanov

The first major accord between the countries since the February invasion of Ukraine aims to ease the "acute hunger" that the United Nations says faces an additional 47 million people because of the war.

Hostility between Moscow and Kyiv spilled over into Friday's signing ceremony in Istanbul -- delayed briefly by disputes about the display of flags around the table and Ukraine's refusal to put its name on the same document as the Russians.

Ukraine had entered the ceremony by bluntly warning it would conduct "an immediate military response" should Russia violate the accord and attack its ships or stage an incursion around its ports.

The two sides eventually inked separate but identical agreements in the presence of Guterres and Erdogan at Istanbul's lavish Dolmabahce Palace.

Guterres then hailed the agreement as "a beacon of hope".

Zelensky said just after the deal was signed that responsibility for enforcing it fell to the United Nations, which along with Turkey is a co-guarantor of the agreement.

The deal includes points on running Ukrainian grain ships along safe corridors that avoid known mines in the Black Sea.

Huge quantities of wheat and other grain have been blocked in Ukrainian ports by Russian warships and the mines Kyiv laid to avert a feared amphibious assault.

Zelensky said that around 20 million tonnes of produce from last year's harvest and the current crop would be exported under the agreement, estimating the value of Ukraine's grain stocks at around $10 billion.

Russian Defence Minister Sergei Shoigu told Kremlin state media he expected the deal to start working "in the next few days" although diplomats expect grain to only start fully flowing by mid-August.

The ornate halls of Istanbul's Dolmabahce Palace felt far removed from east Ukraine's Donbas war zone, where Saturday was another day of relentless shelling across the front.

Russia is trying to fight deeper into the eastern Donetsk region after securing full control of neighbouring Lugansk.

The US State Department on Saturday said that two Americans had died in the area, without saying whether the pair were in the country for combat purposes.

At least one of the dead was a serviceman, he said earlier, in a rare admission of a military casualty in a conflict in which military deaths have been closely guarded by both sides.

Russia also pursued an artillery campaign over Ukraine's second city, Kharkiv, with attacks wounding one woman, the presidency said.