The deal was made at talks in Berlin involving foreign ministers from the two countries, and France and Germany.
It reportedly covers mortars, tanks and heavy weapons below 100mm calibre.
But Germany warned the talks had also emphasised differences over the year-old conflict between Ukraine's military and pro-Russian rebels.
"It was again a very long, very intensive discussion which in parts was very controversial," German Foreign Minister Frank-Walter Steinmeier said.
"During these talks today the differences of opinion between Kiev and Moscow also became clear once again."
But, he added, all parties had also reaffirmed the commitment to a ceasefire agreed in February in the Belarussian capital, Minsk.
Both sides are largely thought to have adhered to the deal - until a recent escalation of fighting in the flashpoints of Donetsk airport and Shyrokyne village, on the outskirts of the strategic town of Mariupol.
A joint final statement by the ministers in Berlin expressed "concern" at the escalation.
|Rebel tanks in Luhansk|
The heavily armed rebels made territorial gains in the run-up to the ceasefire
"Now, tanks, armoured vehicles, mortars and heavy weapons below a 100 mm (3.94 inches) calibre will be included in the withdrawal commitment."
Both Ukraine and the rebels claim to have withdrawn heavy weapons from the line of contact, although sporadic shelling has continued.
Ukraine, Western leaders and Nato say there is clear evidence that Russia has helped the rebels with troops and heavy weapons. Russia denies that, insisting that any Russians on the rebel side are "volunteers".
More than 6,000 people have been killed in clashes since the rebels seized large parts of the Donetsk and Luhansk regions last April - a month after Russia annexed Ukraine's southern Crimea peninsula.