Serbia's parliament has apologised for the 1995 massacre of thousands of Bosnian Muslims in Srebrenica.
Wednesday's resolution expressed sympathy to victims and apologised for not doing enough to prevent the massacre, but stopped short of calling the killings "genocide".
The measure was adopted after nearly 13 hours of debate in parliament - broadcast on live television – ended after midnight.
"We are taking a civilised step of politically responsible people, based on political conviction, for the war crime that happened in Srebrenica," said Branko Ruzic, whose Socialist party was led by Slobodan Milosevic during the 1990s.
Bosnian Serb forces led by General Ratko Mladic killed about 8,000 Bosnian Muslim men and boys after taking over the eastern enclave that was supposed to be under UN protection.
The massacre is Europe's worst atrocity since the second world war.
Belgrade applied for European Union membership in December but must capture and send Mladic - hailed as a hero by many Serbs and believed to be hiding in Serbia - to the war crimes tribunal at The Hague before starting accession talks.
Wednesday's apology appears aimed at showing the EU that Serbia is addressing its wartime past but the process has highlighted how deeply polarised the country remains about that bloody past.
For some parliamentarians, the resolution was unjust for ignoring war crimes against Serbs.
The Srebrenica crime "was no greater than in other places", said opposition deputy Velimir Ilic, citing neighbouring Croatia's moves against Serbs during the war.
"We can't put everything else off to the side."
Others, such as Cedomir Jovanovic, from a liberal opposition party, criticised it for not deeming the Srebrenica killings genocide.
"We wanted a completely different resolution but apparently that is not possible," he said in parliament. "Our society does not have sufficient strength."
Dozens protested in front of parliament, some carrying pictures of Mladic and Bosnian Serb wartime leader Radovan Karadzic, who is on trial in The Hague for the Srebrenica massacre.
Another group carried small signs saying: "Srebrenica was not in my name."
And many in Bosnia, where 100,000 died during the 1992-95 war, found the Serbian resolution too little, too late.
"Many criminals who slaughtered and killed our children fled to Serbia where they live as free citizens and enjoy full rights," said Munira Subasic, the head of a Srebrenica women's association who lost her son and husband in Srebrenica.
"Justice can only be served once all the criminals responsible for the atrocity are named and held accountable," she told the Reuters news agency.
Serb nationalists have rejected the resolution saying that it must also include denunciations of the crimes of Bosnians and Croats, while minority Serb Muslims have dismissed it for not going far enough.
Serbia, Croatia and Bosnia fought a series of deadly wars from 1992 to 1995 as the nation of Yugoslavia broke apart.
Last year, a European parliament resolution condemned the Srebrenica massacre as genocide and called on the region to commemorate its July anniversary.