The UN's Human Rights Council has passed a resolution highly critical of Sri Lanka's record.
The resolution encourages Sri Lanka to conduct an independent and credible investigation into alleged war crimes.
Correspondents say the US-sponsored resolution has been watered down compared with earlier drafts.
Sri Lanka's army defeated separatist Tamil rebels after a brutal 26-year war in 2009, but it is the final phase of that war which has come under scrutiny.
During the council's proceedings, Sri Lanka's representative spoke out against the resolution, arguing that it would endanger an ongoing reconciliation process.
The delegate also accused the United States of targeting countries that did not conform to its political agenda.
But the resolution was passed with 25 countries voting in favour, 13 against and with eight abstentions.
The BBC's Charles Haviland in Colombo says the draft that was up for debate is much milder than an earlier one - among other things "encouraging" Sri Lanka to take actions rather than "urging" it, and deleting an earlier assertion that Colombo had broken its own commitments on political devolution to Tamil areas.
Sri Lanka's media minister, Keheliya Rambukwella, said that issue had been blown up out of proportion.
"As long as there are extreme elements in the world you have these things, in even the most five-star democracies," he said.
Amnesty International said that while the resolution successfully highlighted rights violations, it failed to establish an independent and international investigation into the conflict.
Its strongest passage voices concern at reports of continuing violations. It expresses concern at reports of enforced disappearances, extra-judicial killings, torture, threats to the rule of law, religious discrimination and intimidation of civil society activists and journalists.
This reflects the recent sacking of the top judge in a process domestic courts deemed illegal, and a wave of hardline Buddhist attacks on Muslims and Christians.
The resolution also acknowledges progress made in rebuilding infrastructure but notes that "considerable work lies ahead in the areas of justice, reconciliation and the resumption of livelihoods".
India voted in favour of the resolution as it did last year.
On Tuesday a Tamil party from south India pulled out of India's governing coalition, accusing it of not taking a hard enough line against the Sri Lankan government.
The move comes amid protests in Tamil Nadu state denouncing the prospect of a resolution that was not tough enough. Meanwhile pro-government demonstrators protested outside the US embassy in Colombo, hours before the vote was to take place in Geneva.
Death toll unclear
Both sides were accused of human rights abuses throughout the conflict with much focus on what happened in its final stages, when thousands of civilians were trapped in a thin strip of land in the north of Sri Lanka as fighting raged around them.
The entire conflict left at least 100,000 people dead, but there are still no confirmed figures for tens of thousands of civilian deaths in the last months of battle: estimates range from 9,000 - 75,000.
One UN investigation said it was possible up to 40,000 people had been killed in the final five months alone. Other rights groups suggest the number of deaths could be even higher.
But the government released its own estimate last year, concluding that about 9,000 people perished in those few months.
Allegations of war crimes committed by government forces have also dogged the island state. The 2011 report commissioned by the UN said that most of the civilian deaths were caused by government shelling.
Video footage has also emerged appearing to show serious abuses committed by the army. All of these allegations have been vociferously denied by Colombo, which maintains such evidence is fabricated.
The Sri Lankan government commissioned its own investigation into the war in 2011.
Its Lessons Learnt and Reconciliation Commission (LLRC) cleared the military of allegations that it deliberately attacked civilians. It said that there had been some violations by troops, although only at an individual level.
In November 2012 an internal UN report said that the UN had failed in its mandate to protect civilians in those final months of the civil war.