MPs in the government-controlled chamber overwhelmingly adopted a bill dropping Ukraine's non-aligned status – a classification given to states such as Switzerland that refuse to join military alliances and thus play no part in wars.
Sergei Lavrov, Russia's foreign minister, said the decision was "counterproductive" and "only heats up the confrontation, creating the illusion that accepting such laws is the road to regulating the deep internal crisis in Ukraine".
Dmitry Medvedev, Russia's prime minister, said that Mr Poroshenko's request to the Verkhovna Rada to jettison non-aligned status was "effectively an application to join NATO, turning Ukraine into a potential military opponent of Russia".
The decision would have "extremely negative consequences" and Russia "will have to react", said Medvedev, without saying how.
Petro Poroshenko, Ukraine's president, was unapologetic about the move, saying that Ukraine had "no alternative to Euro-Atlantic integration".
NATO is unlikely to entertain making Ukraine a member any time soon, but the lifting of Kiev's restriction on joining security blocs clears the way for an accession at a later date.
MPs made clear the law was adopted in response to the Kremlin's annexation of Crimea and its intervention in the conflict in the east of the country.
Pavlo Klimkin, Ukraine's foreign minister, told the parliament that "in the conditions of the current aggression against Ukraine, this law opens for us new mechanisms".
Ukraine's government veered towards a pro-western course after Mr Poroshenko was elected in May, following the ouster of Viktor Yanukovych, the Moscow-leaning former president who fled to Russia after a popular uprising against his rule.
Government forces have been fighting pro-Russian separatists in the east of Ukraine since April.
A shaky ceasefire has largely held in recent weeks and peace talks are expected to tale place in Minsk, Belarus, on Wednesday and Friday.
The Kremlin has long seen NATO expansion in eastern Europe as a deliberate attempt to encircle Russia.
Four countries bordering it have joined the bloc since the Soviet collapse – Poland in 1999 and Estonia, Latvia and Lithuania in 2004.
Speaking at his annual press conference in Moscow last week, Vladimir Putin, Russia's president, said that enlargement of the alliance had built a new, "virtual" Berlin Wall around his country.
Arseny Yatsenuk, Ukraine's prime minister, visited NATO headquarters in Brussels earlier this month.
Jens Stoltenberg, the bloc's secretary general, told him that Ukraine and NATO were "able to develop our partnership".
A spokesman for the alliance said on Tuesday:
"Our door is open and Ukraine will become a member of NATO if it so requests and fulfils the standards and adheres to the necessary principles."
Mr Poroshenko's proposal was backed by 303 of 357 MPs in parliament.
Ukraine started down a path towards NATO in the past, joining its "membership action plan" in 2008, but that policy was abandoned after Yanukovich was elected two years later and the country opted for non-aligned status.
Lavrov said on Tuesday that instead of abandoning the status, "a much more productive and intelligent path" for Ukraine "would be to begin, at long last, a dialogue with that part of its own society that was completely ignored when the state coup took place".
Those comments referred to Yanukovych's ouster and the Russophone east of the country, where rebels have set up the Donetsk and Luhansk "People's Republics" with the help of combatants and weapons flowing across the border from Russia.
Putin claimed last week that all fighters from Russia in eastern Ukraine were unpaid volunteers but there have been numerous reports of serving Russian soldiers being killed or captured there.
Source: Telegraph UK