Ukrainian MPs have granted self-rule to parts of two eastern regions, and an amnesty to pro-Russian rebels there.
The law affecting Donetsk and Luhansk regions – which is in line with the 5 September ceasefire – was condemned by some MPs as “capitulation”.
Meanwhile, Russia said it needed to boost troops in Crimea – Ukraine’s peninsula annexed by Moscow in March.
The rebels in the east have been battling Ukrainian troops since their seizure of a number of towns in April.
Ukraine and the West have accused Russia of backing the separatists with soldiers and heavy weapons. The Kremlin denies doing so.
At least 3,000 people have been killed in the conflict and more than 310,000 internally displaced in Ukraine, the UN says.
On Tuesday, the Ukrainian and European parliaments also voted to ratify a major EU-Ukraine association agreement that aims to bring the ex-Soviet republic closer to the EU.
Ukrainian President Petro Poroshenko stressed that the legislation giving the special status to parts of Donetsk and Luhansk regions for three-years would guarantee the “sovereignty, territorial integrity and independence” of Ukraine, while paving the way for decentralisation.
The amnesty affects the rebels, but does not cover the shooting down of the MH17 passenger plane in July.
Western leaders believe rebels shot down the Malaysia Airlines jet with a Russian missile – a charge the rebels and the Kremlin deny.
The legislation means that pro-Russian separatists taken prisoner in the fighting should now be released.
Separatists holding government buildings are now supposed to leave them, hand over captured Ukrainian soldiers and other prisoners and surrender their weapons.
Rebels accused of other “grave” crimes will not be covered by the new amnesty either.
But some Ukrainian lawmakers described the self-rule law as a sell-off of Ukraine in what they see as a war against Russia.
“A capitulation was announced today in this war,” Oleh Tiagnybok, the leader of the nationalist Svoboda party, was quoted as saying by the Ukrainska Pravda website.
Andriy Shevchenko, an MP in the Batkivshchyna party led by former Prime Minister Yulia Tymoshenko, said he was “ashamed of this parliament”.
He said the law was voted in “a secret regime”, violating normal parliamentary procedures.
Meanwhile, Andrei Purgin, a rebel leader in Donetsk, told AFP news agency that the eastern region “no longer has anything to do with Ukraine”.
“Ukraine is free to adopt any law it wants. But we are not planning any federalism with Ukraine.”
Many rebels are demanding full independence and speak of creating a new state called “Novorossiya”, something Russian President Vladimir Putin has also mentioned in speeches.
Mr Purgin nonetheless said the legislation was a “positive signal because it marks Kiev’s return to reality”.
The EU-Ukraine agreement ratified on Tuesday lies at the root of Ukraine’s crisis.
It was former President Viktor Yanukovych’s refusal to sign the deal last November that triggered mass protests and his eventual fall from power.
The votes ratifying the agreement took place simultaneously, with a live video link-up between the parliaments in Strasbourg and Kiev.
Both President Poroshenko and the President of the European Parliament, Martin Schulz, called it a historic day.
The agreement would make Ukraine compliant with EU standards in the areas of human rights, security and arms control, and would remove trade barriers.
But negotiations with Russia last week led to the free-trade part of the agreement being postponed until 2016.
Russia says its market could be flooded with cheap EU goods shipped via Ukraine.
Still, until 2016 Ukraine will maintain its existing restrictions on EU imports, while enjoying tariff-free access to the EU market for its own exports.
In return, Russia has pledged to maintain favourable trade rules in place for Ukraine.
The crisis has already severely hit Russia-Ukraine trade ties, with the two neighbours imposing economic sanctions on each other.