A similar vote last week by a US Congressional panel angered Turkey
Turkey has withdrawn its ambassador to Sweden after the parliament voted narrowly to describe as genocide the killing of Armenians in World War I.
The Turkish government condemned the resolution, saying it was "based upon major errors and without foundation".
The Swedish government opposed the opposition resolution but it passed by one vote after some MPs voted against party lines.
It comes days after a US congressional panel passed a similar resolution.
Turkish Prime Minister Recep Tayyip Erdogan cancelled a visit to Stockholm scheduled next week and issued a statement criticising the vote.
"Our people and our government reject this decision based upon major errors and without foundation," said the statement.
MASS KILLINGS OF ARMENIANS
Hundreds of thousands of ethnic Armenians killed by Ottoman Turks in 1915-6
Many historians and the Armenian people believe the killings amount to genocide
Turks and some historians deny they were orchestrated
More than 20 countries regard the massacres as genocide
The cross-party motion called on the government "to recognise as an act of genocide the killing of Armenians, Assyrians/Syriacs/Chaldeans and Pontic Greeks in 1915".
Swedish Foreign Minister Carl Bildt said the vote was a "mistake" but that it did not change the position of his government, which supports Turkey's entry into the EU.
The Swedish vote comes less than a week after the US House of Representatives Foreign Affairs Committee approved a similar resolution - by 23 votes to 22 - despite strong Turkish lobbying not to.
That vote also sparked anger from Turkey and the recall of its ambassador to Washington.
Moves between Turkey and Armenia to normalise relations have faltered recently.
Hundreds of thousands of Armenians died in 1915, along with other minorities including Assyrians and Greeks, when they were deported en masse by the Ottoman Empire. They were killed by troops or died from starvation and disease.
Armenia says up to 1.5 million Armenians were killed, but Turkey says the figure is no more than one-third that and that many Turks died as well.
Turkey accepts that atrocities were committed but argues they were part of the war and that there was no systematic attempt to destroy the Christian Armenian people.
Armenia wants Turkey to recognise the killings as an act of genocide, but successive Turkish governments have refused to do so.
Armenians have campaigned for the killings to be recognised internationally as genocide - and more than 20 countries have done so.
This story was amended on 7 April, 2010 to include reference to killing of Assyrians and Greeks.