The bill presented by the right-wing minority government of Prime Minister Lars Løkke Rasmussen was approved by a huge majority of 81 of the 109 lawmakers present, as members of the opposition Social Democrats backed the measures.
The bill was watered down significantly since it was originally proposed, with wedding rings and low-value items explicitly excluded from threat of confiscation in the final draft.
Approval had been widely expected, as the main opposition party, the Social Democrats, backed the measures as did government support parties the Danish People's Party, the Conservatives and Liberal Alliance.
"There's no simple answer for a single country, but until the world comes together on a joint solution (to the migrant crisis), Denmark needs to act," MP Jakob Ellemann-Jensen of Rasmussen's Venstre party said during the debate.
The Danish government has insisted the new law is needed to stem the flow of refugees even though Denmark and Sweden recently tightened their borders, a move that prompted Germany and Austria to turn back new arrivals heading for Scandinavia.
While international outrage has focused on a proposal allowing police to seize cash and valuables from refugees to help pay for their stay in asylum centres, rights activists have blasted a proposed three-year delay for family reunifications which they say breaches international conventions.
'What is the alternative?'
Prime Minister Lars Løkke Rasmussen of the right-wing Venstre party has shrugged off criticism by calling it "the most misunderstood bill in Denmark's history", seemingly more concerned with opinion polls that show 70 percent of Danes rank immigration as their top political concern.
Social Democrat Dan Jørgensen addressed opponents of the bill, demanding: "To those saying what we are doing is wrong, my question is: What is your alternative?
"The alternative is that we continue to be (one of) the most attractive countries in Europe to come to, and then we end up like Sweden."
Copenhagen has often referred to neighbouring Sweden as a bad example, where 163,000 asylum applications were submitted last year -- five times more than in Denmark relative to their population size.
Denmark's minority government eventually backtracked on parts of the plan to confiscate migrants' valuables in order to secure wider backing.
Asylum-seekers will now have to hand over cash exceeding 10,000 kroner (€1,340, $1,450) and any individual items valued at more than that amount, up from the initial 3,000 kroner proposed.
After thorny negotiations with the other parties, Integration Minister Inger Støjberg agreed to exempt wedding rings and other items of sentimental value.
The government points out that Danes seeking to qualify for social benefits sometimes also have to sell their valuables. However, they are not subjected to the kind of searches proposed in the new asylum law.
Some have likened the Danish proposals to the confiscation of gold and other valuables from Jews by the Nazis during the Holocaust.
The plan has "a particularly bitter connotation in Europe, where the Nazis confiscated large amounts of gold and other valuables from Jews and others," The Washington Post wrote.
'Just plain wrong'
Once a champion of refugee rights, the Scandinavian country's goal is now to become "significantly less attractive for asylum-seekers", Støjberg said.
"The tone in the public debate about refugees and immigrants has undoubtedly become tougher," Kashif Ahmad, the leader of the National Party (Nationalpartiet), which hopes to enter parliament by targeting the immigrant vote, told AFP.
John Dalhuisen, Europe and Central Asia director at Amnesty International, said the law was "plain wrong" and "a sad reflection of how far Denmark has strayed" from its historic support of international norms in the Refugee Convention.
"European states must stop this dismal race to the bottom and begin to meet their international obligations, by upholding refugees' human rights and dignity," said Dalhuisen. "Anything less is a betrayal of our common humanity."
But Marcus Knuth, Venstre's spokesman on integration issues, said such criticism was unfair.
"Denmark continues to be one of the most welcoming and caring places that you can seek asylum in. So the criticism that all of a sudden we were doing something wrong we find highly, highly unfair," he told AFP.
"We simply wish to be put more at par with other European countries so that we are not one of the countries that receive by far the most asylum-seekers."
Home to 5.6 million people, Denmark registered 21,000 asylum applications in 2015, making it one of the top EU destinations per capita for migrants but putting it far behind the 163,000 registered in neighbouring Sweden.
International criticism had mounted in the run-up to Tuesday's vote, with refugee agency UNHCR claiming it violates the European Convention on Human Rights, the UN Convention on the Rights of the Child, and the UN Refugee Convention.
But Rasmussen, whose Venstre party won a June 2015 election after promising an "immediate slowdown" of Denmark's refugee influx, has been unfazed, arguing that the UN Refugee Convention may need to be changed if refugees keep pouring into Europe.
Foreign Minister Kristian Jensen defended the new law last week as he appeared before the United Nations for a review of Denmark's human rights policies.
"The Danish welfare state is based upon the very simple principle that the state will provide and pay for those unable to take care of themselves, not for those who are able," he told the Human Rights Council.
He and Støjberg reiterated the same line as they faced questioning from European MPs in the civil liberties committee on Monday.
Twenty-seven MPs voted against the bill in the one-chamber parliament, including three dissenting Social Democrats. A legislator for Greenland, a Danish territory, abstained and 70 MPs did not take part.
The bill is scheduled to be signed into law by Queen Margrethe within a few days.
Danish lawmakers last week also passed a resolution pushing the government to look into the consequences of building temporary housing complexes outside cities for refugees, like the country did during the Balkans war in the 1990s.
The move is backed by the anti-immigration Danish People's Party, which sees it as a first step towards building state-run camps where refugees would stay without integrating into Danish society.