The US-led resolution was adopted with 24 votes in favour, 15 against and eight abstentions.
India voted against Sri Lanka on the resolution after pressure from political parties like the DMK and AIADMK on the issue.
China, however, firmly backed Sri Lanka against the US-sponsored resolution at the UNHRC on alleged war crimes, saying it is against any country putting pressure on others in the name of rights violations.
Tabling the resolution, the United States said Colombo had been given three years to hold its own investigations into allegations of serious violations, but "given the lack of action… it is appropriate" that the 47-member state council pushed it to do so.
"An enduring peace will be unsustainable without meaningful steps to foster national reconciliation and accountability," said US envoy Eileen Donahoe.
"It is a resolution that encourages Sri Lanka to … make concerted efforts at achieving the kind of meaningful accountability upon which lasting reconciliation efforts can be built."
Unlike in the immediate aftermath of the conflict when it staved off a similar resolution at the Human Rights Council, Colombo was unable this time to lobby sufficient support to defeat the Western-led move.