"A high concentration of ammonia has caused the killing of 20 tonnes of fish in the river Timok," said the public health department in the eastern town of Zajecar, some 250 kilometres (150 miles) east of Belgrade.
Preliminary analysis showed ammonia levels were "up to 16 times higher than allowed" in Timok water samples taken from near the spot where sewage from the nearby town of Knjazevac spills into the river, it said.
"The ecological catastrophe" was noticed this weekend, when local fishermen spotted hundreds of fish floating near the banks of the river, apparently dead from a lack of oxygen, Belgrade radio B92 reported.
However, Serbian ecological inspector Vesna Mitrovic told Tanjug news agency that the results of analysis were yet to show what caused the incident "of massive proportions."
But she added most of the dead fish had been found in the lower reaches of the Timok, where waste water from the industrial zone at Knjazevac had flowed into the river.
Srdan Peric of the local fishermen's association said the waterway would need at least 10 years before it could fully recover from the environmental disaster.
The Timok is a tributary of the Danube which empties into the Black Sea.