A 14-year-old boy shot his teacher in a Belgrade classroom on Wednesday morning before opening fire on other students and security guards, killing eight pupils and a security guard, Serbia's interior ministry said.
Milan Milosevic, the father of one of the pupils at the Vladislav Ribnikar elementary school, said his daughter was in the class where the gun was fired.
"She managed to escape. (The boy) ...first shot the teacher and then he started shooting randomly," Milosevic told broadcaster N1.
Milan Nedeljkovic, mayor of the central Vracar district where the school is located, said doctors were fighting to save the teacher's life.
The interior ministry statement said eight children and a security guard had been killed and six children had been hospitalized along with the teacher.
Police said a seventh-grade student had been arrested.
"I saw the security guard lying under the table. I saw two girls with blood on their shirts. They say he (the shooter) was quiet and a good pupil. He recently joined their class," added Milosevic, who had rushed to the school after the shooting.
Officers in helmets and bulletproof vests cordoned off the area around the school.
"I saw kids running out from the school, screaming. Parents came, they were in panic. Later I heard three shots," a girl who attends a high school adjacent to Vladislav Ribnikar told state TV RTS.
Casualties are being treated and an investigation into the motives behind shooting is under way, police said in a statement.
Mass shootings are comparatively rare in Serbia, which has very strict gun laws. But the western Balkans are awash with hundreds of thousands of illegal weapons following wars and unrest in the 1990s.
Serbian authorities have issued several amnesties for owners to hand in or register illegal guns.