Six men, six women and a two-year-old boy died before the gunman tried to kill himself and his wife. They are now said to be in a serious condition.
Police identified the gunman as Ljubisa Bogdanovic, a 60-year-old war veteran.
The victims were reported to be relatives and neighbors of Ljubisa Bogdanovic, and included his mother and son.
The shootings took place in several houses in Velika Ivanca, about 50 km (30 miles) south-east of capital Belgrade at about 5 a.m. local time.
Local residents said the gunman, armed with a 9 mm handgun, killed his son before leaving the house and shooting dead neighbors, some of whom were still asleep.
“He knocked on the doors, and as they were opened he just fired a shot,” villager Radovan Radosavljevic was quoted by the Associated Press as saying.
“He was a good neighbor and anyone would open their doors to him. I don’t know what happened.”
All but one of the victims died instantly, police said.
Serbian police chief Milorad Veljovic, who is at the scene, told RTS that the gunman was “from a peaceful family and had no criminal record”.
“We’re all just stunned,” Milorad Veljovic said.
Ljubisa Bogdanovic is reported to have been made redundant last year. He fought as a Serb soldier in the war in Croatia in 1991.
The motive for the attack was not immediately clear.
In a similar attack in Serbia in 2007, a 39-year-old man shot dead nine people and injured two others in a village in the east of the country.
gS_96N15FGwImage source: Wikimedia Commons President-elect Donald Trump celebrated his election victory at the Ultimate Fighting…
Millions of voters across the US chose to return Donald Trump to the White House…
Donald Trump declares victory in the US election as he addresses jubilant supporters in Florida.…
Stocks around the world are rising as Donald Trump appears to be on the cusp…
Donald Trump has won Pennsylvania, North Carolina and Georgia and taken a lead over Kamala…
Quincy Jones, the celebrated musician and producer who worked with Michael Jackson, Frank Sinatra, Ray…