Vladimir Putin told parliament that Crimea had “always been part of Russia”.
Kiev said it would never accept the treaty and the US has called a G7-EU crisis meeting next week in The Hague.
After the signing, Kiev said a Ukrainian serviceman had been killed in an attack on a base in Crimea.
The defense ministry said the attack took place in the capital, Simferopol.
US Vice-President Joe Biden, speaking earlier in Poland, said Russia’s involvement in Crimea was “a brazen military incursion” and its annexation of the territory was “nothing more than a land grab” by Moscow.
The Ukrainian foreign ministry said: “We do not recognize and never will recognize the so-called independence or the so-called agreement on Crimea joining the Russian Federation.”
Ukraine’s interim PM Arseniy Yatsenyuk said the Crimea crisis had moved from the political to the military stage.
Germany and France quickly condemned the Russia-Crimea treaty.
Vladimir Putin later appeared before crowds in Moscow’s Red Square, telling them: “Crimea and Sevastopol are returning to… their home shores, to their home port, to Russia!”
He shouted “Glory to Russia” as the crowds chanted “Putin!”
Crimean officials say that, in a referendum held in the predominantly ethnic-Russian region on Sunday, 97% of voters backed splitting from Ukraine.
The EU and the US have declared the vote illegal. Travel bans and asset freezes have been imposed on government officials and other figures in Russia, Crimea and Ukraine, but these have been largely dismissed as ineffectual in Russia.
In a televised address in front of both houses of parliament and Crimea’s new leaders, Vladimir Putin said: “In the hearts and minds of people, Crimea has always been and remains an inseparable part of Russia.”
The referendum had been legal and its results were “more than convincing”, he said.
“The people of Crimea clearly and convincingly expressed their will – they want to be with Russia,” he said, and were no longer prepared to put up with the “historical injustice” of being part of Ukraine.
Vladimir Putin criticized Ukraine’s post-uprising leaders and those behind the unrest, saying they were “extremists” who had brought chaos.
He also praised the “courage, bearing and dignity” of Crimeans, and thanked all Russians for their “patriotic feeling”.
The West, Vladimir Putin said, had behaved “irresponsibly” in backing the uprising, and he denied Russia was interested in annexing more territory.
“Don’t trust those who frighten you with Russia… we do not need a divided Ukraine” he said.
Russia “will of course be facing foreign confrontation,” he said, adding: “We have to decide for ourselves, are we to protect our national interest or just carry on giving them away forever?”
The audience frequently applauded Vladimir Putin at length during his emotionally charged speech, and gave him a standing ovation.
President Vladimir Putin, Crimea’s PM Sergei Aksyonov, the region’s Speaker Vladimir Konstantinov and the mayor of Sevastopol, Alexei Chaliy, then signed a treaty on making the Black Sea peninsula a part of Russia.
Earlier, Vladimir Putin had recognized Crimea as a sovereign state and approved a draft bill on its accession to the Russian Federation.
The bill must now be approved by the constitutional court and then ratified by parliament.
7FekTT9EUI8The US House Ethics Committee has voted to release its report on former Republican Representative…
ABC News has agreed to pay $15 million to President-elect Donald Trump to settle a…
South Korea’s parliament has voted to impeach President Yoon Suk Yeol over his failed attempt…
Israeli war planes have carried out more than 100 air strikes in Syria on December…
President-elect Donald Trump has threatened to impose 100% tariffs on the BRICS countries if they…
Syrian troops have withdrawn from the city of Aleppo following an offensive by rebels opposed…