About 8,000 Bosnian Muslim men and boys died at the hands of Bosnian Serb forces amid the break-up of Yugoslavia.
Serbian Prime Minister Aleksandar Vucic - whose country backed the Bosnian Serbs - was chased away from the ceremony by a crowd throwing stones.
On Wednesday, Russia vetoed a UN resolution calling the events as genocide - a term that angers Serbia.
The Bosnian War saw Bosnian Serb forces, backed by Serbia, fighting the Muslim-led Bosnian government.
In July 1995, thousands seeking shelter in what was supposed to be a UN refuge in Srebrenica were shot dead. It was Europe's worst atrocity since World War Two.
'No more killing field'
On Friday, almost 10,000 people took part in an annual peace march, retracing the route of the men and boys who tried to flee Srebrenica as Bosnian Serb forces took control of the town.
A funeral service for more than 100 victims whose remains were recently identified using DNA analysis was also being held on Saturday.
Attending the ceremonies, Bill Clinton, the US president at the time, apologised that it had taken so long to end the war, adding: "I never want to see another killing field like this."
Mr Clinton praised Serbian Prime Minister Aleksandar Vucic for being there.
In an open letter, Mr Vucic said "Serbia clearly and unambiguously condemns this horrible crime and is disgusted with all those who took part in it and will continue to bring them to justice".
Munira Subasic, head of the Association of Srebrenica Mothers, pinned a white and green flower of remembrance on Mr Vucic's lapel and he signed a book of condolences.
However, later the Serbian leader was heckled by crowds who proceeded to throw stones in his direction forcing him to flee.
In the run-up to the anniversary, Serbian authorities banned commemorations in the capital Belgrade, after right-wing groups threatened disruption.
Activists had planned to mourn the victims outside the Serb parliament but police responded to plans for counter-demonstrations by banning all gatherings at parliament on Saturday.
Serbia's Interior Minister Nebojsa Stefanovic said he had taken the decision to guarantee "peace and security in the whole of Serbia".
Timeline of Srebrenica siege
6-8 July 1995: Bosnian Serb forces start shelling Srebrenica enclave
9 July: Bosnian Serbs step up shelling; thousands of Bosnian Muslim refugees flee to Srebrenica
10 July: Dutch peacekeepers request UN air support after Bosnian Serbs shell Dutch positions. Large crowds of refugees gather around Dutch positions
11 July: More than 20,000 refugees flee to main Dutch base at Potocari. Serbs threaten to kill Dutch hostages and shell refugees after Dutch F-16 fighters bomb Serb positions. Bosnian Serb commander Ratko Mladic enters Srebrenica and delivers ultimatum that Muslims must hand over weapons
12 July: An estimated 23,000 women and children are deported to Muslim territory; men aged 12-77 taken "for interrogation" and held in trucks and warehouses
13 July: First killings of unarmed Muslims take place near village of Kravica. Peacekeepers hand over some 5,000 Muslims sheltering at Dutch base in exchange for the release of 14 Dutch peacekeepers held by Bosnian Serbs
14 July: Reports of massacres start to emerge
Serbian Prime Minister Aleksandar Vucic - whose country backed the Bosnian Serbs - was chased away from the ceremony by a crowd throwing stones.
On Wednesday, Russia vetoed a UN resolution calling the events as genocide - a term that angers Serbia.
The Bosnian War saw Bosnian Serb forces, backed by Serbia, fighting the Muslim-led Bosnian government.
In July 1995, thousands seeking shelter in what was supposed to be a UN refuge in Srebrenica were shot dead. It was Europe's worst atrocity since World War Two.
'No more killing field'
On Friday, almost 10,000 people took part in an annual peace march, retracing the route of the men and boys who tried to flee Srebrenica as Bosnian Serb forces took control of the town.
A funeral service for more than 100 victims whose remains were recently identified using DNA analysis was also being held on Saturday.
Attending the ceremonies, Bill Clinton, the US president at the time, apologised that it had taken so long to end the war, adding: "I never want to see another killing field like this."
Mr Clinton praised Serbian Prime Minister Aleksandar Vucic for being there.
In an open letter, Mr Vucic said "Serbia clearly and unambiguously condemns this horrible crime and is disgusted with all those who took part in it and will continue to bring them to justice".
Munira Subasic, head of the Association of Srebrenica Mothers, pinned a white and green flower of remembrance on Mr Vucic's lapel and he signed a book of condolences.
However, later the Serbian leader was heckled by crowds who proceeded to throw stones in his direction forcing him to flee.
In the run-up to the anniversary, Serbian authorities banned commemorations in the capital Belgrade, after right-wing groups threatened disruption.
Activists had planned to mourn the victims outside the Serb parliament but police responded to plans for counter-demonstrations by banning all gatherings at parliament on Saturday.
Serbia's Interior Minister Nebojsa Stefanovic said he had taken the decision to guarantee "peace and security in the whole of Serbia".
Timeline of Srebrenica siege
6-8 July 1995: Bosnian Serb forces start shelling Srebrenica enclave
9 July: Bosnian Serbs step up shelling; thousands of Bosnian Muslim refugees flee to Srebrenica
10 July: Dutch peacekeepers request UN air support after Bosnian Serbs shell Dutch positions. Large crowds of refugees gather around Dutch positions
11 July: More than 20,000 refugees flee to main Dutch base at Potocari. Serbs threaten to kill Dutch hostages and shell refugees after Dutch F-16 fighters bomb Serb positions. Bosnian Serb commander Ratko Mladic enters Srebrenica and delivers ultimatum that Muslims must hand over weapons
12 July: An estimated 23,000 women and children are deported to Muslim territory; men aged 12-77 taken "for interrogation" and held in trucks and warehouses
13 July: First killings of unarmed Muslims take place near village of Kravica. Peacekeepers hand over some 5,000 Muslims sheltering at Dutch base in exchange for the release of 14 Dutch peacekeepers held by Bosnian Serbs
14 July: Reports of massacres start to emerge

Comment