Police identified the shooter by his initials, K.K., and said he had opened fire with his father's gun. The statement said he was a student at the school and was born in 2009. He was arrested in the schoolyard, police said.
Police said they received a call about the shooting in the Vladislav Ribnikar primary school around 8:40 a.m.
Local media footage from the scene showed commotion outside the school as police removed the suspect, whose head was covered as officers led him to a car parked in the street.
Mass shootings in Serbia and in the wider Balkan region are extremely rare and none has been reported in schools in recent years. In the last mass shooting, a Balkan war veteran killed 13 people in a central Serbian village in 2013.
More about: