Ukraine's opposition leader Viktor Yushchenko has congratulated supporters on winning "a great victory" after parliament passed wide-ranging reforms.
Yushchenko said Ukraine was now a new European nation
He told cheering crowds in Kiev's Independence Square that electoral law changes had opened the way for him to be elected president on 26 December.
The new poll will be a re-run of last month's run-off between Mr Yushchenko and Prime Minister Viktor Yanukovych.
Mr Yanukovych's win was annulled amid claims of widespread fraud.
The vote by Ukraine's parliament on Wednesday was the culmination of 17 days of protests by supporters of Mr Yushchenko in what has been dubbed the Orange Revolution.
Lawmakers approved the reform bill by 402 votes to 21, with 19 abstentions.
The compromise package includes electoral law changes demanded by the opposition, but also transfers some presidential powers to parliament.
Outgoing President Leonid Kuchma immediately signed the bill into law.
"This is an act of consolidation and reconciliation, an act which demonstrates that Ukraine is united," speaker Volodymyr Lytvyn told the chamber after the vote.
Hours later, Mr Yushchenko told his supporters: "This is a great victory... During these 17 days, we have got a new country."
He added: "We have created a brand-new European nation."
He said the December poll was now the main target, urging many of his supporters to go home and prepare for the ballot.
Thousands of opposition supporters have been on the streets of the capital, Kiev, and other cities since the political crisis began, camping out in freezing conditions.
Yushchenko's supporters have now been told to prepare for the poll
But the BBC's Mike Donkin in Kiev says that since the parliamentary vote, opposition cordons around government buildings in the capital have been lifted.
He adds that most of the tents put up by Mr Yushchenko's supporters on Independence Square - the opposition's command headquarters - have now been taken down, although a small camp will remain.
Pro-Russian Mr Yanukovych was deemed the winner of the 21 November poll, but pro-Western Mr Yushchenko - backed by international observers - declared the election fraudulent.
Ukraine's Supreme Court subsequently annulled the election and ordered the re-run.
In eastern Ukraine, Mr Yanukovych said he was not happy with the passing of the reform bill in parliament.
Describing the move as a "soft coup d'etat", he said: "All the decisions were made under pressure."
Lawmakers stood and cheered as President Kuchma signed the measure in the chamber.
"Over the last 100 years, Ukraine has more than once suffered through a crisis, but there was always enough
common sense to find a way out and a decision," Mr Kuchma said.
He added that he had accepted the resignation of Ukraine's prosecutor general, one of several opposition demands.
The package of measures include:
- Reforming the Central Election Commission, dismissing the chairman and some other members
- Changes designed to reduce possibility of ballot fraud, such as limiting the use of absentee ballots and home voting
- Reduced powers for the president who may now only appoint the prime minister, defence and foreign minister, subject to legislators' approval
- New functions for the regions, designed to ease tensions between the pro-Yushchenko west and pro-Yanukovych east.
Correspondents say Wednesday's vote is likely to increase Mr Yushchenko's chances of winning the new run-off, albeit with weaker powers.
The political crisis in Ukraine has provoked diplomatic disagreements between the West and Russia, which has accused the United States and the European Union of trying to install their ally in Kiev.
EU foreign policy chief Javier Solana, who has mediated in the crisis, welcomed Wednesday's vote, as did US Secretary of State Colin Powell.
But Russia's mediator, parliamentary speaker Boris Gryzlov, was more equivocal.
"I am deeply convinced that only Mr Yanukovych's victory will allow Ukraine to remain an integral and united country," he said.