Ukraine and Russia have agreed to implement a "full and comprehensive" ceasefire in eastern Ukraine by the end of 2019, after top-level talks.
Russian President Vladimir Putin and Ukraine's Volodymyr Zelensky met face to face in Paris on Monday.
Five-and-a-half years of fighting between Ukrainian government forces and Russian-backed rebels have cost 13,000 lives.
The negotiations were brokered by the leaders of France and Germany.
They follow a big prisoner swap and the withdrawal of Ukraine's military from three key areas on the front line, reports the BBC.
What was agreed?
In a written statement, the countries agreed to the release and exchange of all "conflict-related detainees" by the end of the year.
The two sides also pledged to disengage military forces in three additional regions of Ukraine by the end of March 2020, without specifying which regions would be affected.
Additional talks will be held in four month to take stock of the ceasefire's progress.
At a press conference after the talks in France's Élysée Palace, President Putin hailed the talks as an "important step" towards a de-escalation of the conflict.
President Zelensky said the issue of Russian gas exports via pipelines through Ukraine had been "unblocked" after a dispute about transit tariffs, and an agreement would now be worked out.
But Russia and Ukraine continue to disagree on issues such as the withdrawal of Russia-back troops, and elections in areas of Ukraine held by separatist rebels.
Mr Putin also called for a change in Ukraine's constitution to give special status to the Donbas region, which is held by the rebels.
What's the background to the crisis?
Ukraine's President Zelensky also told reporters that Ukraine would not make any territorial concessions in exchange for peace.
"We saw differences today," said French President Emmanuel Macron, who hosted the talks with German Chancellor Angela Merkel.
"We didn't find the miracle solution, but we have advanced on it," he added.
So how did we get here?
Mr Zelensky, a former comic actor, was elected president of Ukraine in a landslide victory in April following a campaign built around bringing peace to eastern Ukraine.
Since then, his strategy has focused on trying to restart talks with Moscow. For that to happen Mr Zelensky has had to agree to some Russian conditions, including pulling back Ukrainian troops in the eastern towns of Stanytsia Luhansk, Petrivske, and Zolote.
In June, Ukrainian troops and pro-Russian separatists withdrew a kilometre from Stanytsia Luhanska. By late October, the Ukrainians and separatists had disengaged from Zolote and early in November they pulled back from Petrivske.
Nato and Western intelligence experts have repeatedly accused Russia of sending heavy weapons and combat troops into eastern Ukraine to help the rebels.
Russia denies that, but admits that Russian "volunteers" are helping the rebels.
In September, Mr Zelensky won praise for a long-awaited prisoner swap with Russia - he described it as a "victory" that had emerged from personal phone contact with the Russian president.
To pave the way for the summit, President Zelensky accepted a 2016 deal granting special status to the separatist-held parts of Ukraine's Donbas region.
The "Steinmeier formula" aims to break the impasse over peace agreements reached at the height of the fighting. It details free and fair elections in the east under Ukrainian law, verification by the Organisation for Security and Co-operation in Europe (OSCE), and then self-governing status in return.