Seventeen people died in the shootings on Wednesday and Thursday, including eight children in a primary school.
The protesters called for the resignation of top government officials and want newspapers and TV stations they say promote violence shut down.
Serbia's President, Aleksandar Vucic, condemned the protests.
He accused the opposition of capitalising on a national tragedy to promote their own interests. He said he was ready to test his party's popularity at a snap vote.
"I will continue to work and I will never back down before the street and the mob... Whether it will be a reshuffle of the government or an election, we shall see," he said on TV.
The next parliamentary elections are set to take place in 2026.
Protesters in Belgrade stood behind a banner that reads "Serbia against violence"
Police were stationed near all of Belgrade's schools as they restarted classes on Monday. The government is planning to recruit more officers to be stationed at schools.
Crowds marched through the centre of the city behind a banner that read "Serbia against violence".
"We are here because we can't wait any longer. We've waited too long, we've been silent too long, we've turned our heads too long," Marina Vidojevic, a schoolteacher, told the crowd, as quoted by AFP news agency.
"We want safe schools, streets, villages and cities for all children."
Thousands also turned out across the northern city of Novi Sad, where protests threw flowers into the Danube river which flows to the capital.
The protesters called for the resignation of the interior minister and the head of Serbia's intelligence agency.
Serbia's Education Minister, Branko Ruzic, stepped down on Sunday, citing the "cataclysmic tragedy" of the recent school massacre in his resignation letter.
In Novi Sad, protesters threw flowers into the Danube river
Serbia has the highest rates of gun ownership in Europe, with about 39 out of 100 people owning guns according to a 2018 survey.
Mr Vucic has started a one-month amnesty for surrendering illegal weapons, with people able to drop off their guns to police with no questions asked.
The amnesty will last 30 days.
On the first day of the amnesty around 1,500 guns were surrendered, according to Serbian police.
BBC