Anti-Nazi activists rallied just metres away, accusing the far right of using the death for political ends.
Injuries were caused when protesters on both sides threw objects, police say.
German Chancellor Angela Merkel had warned that “vigilante justice” would not be tolerated.
Police warned masked demonstrators who were picking up stones in the city 190km (118 miles) south of Berlin that their actions were being filmed.
Earlier, the authorities said police were investigating alleged assaults on an Afghan, a Syrian and a Bulgarian during the unrest that broke out on Sunday.
Reports have included mentions of protesters chasing foreigners, though there are few details, and police have appealed for witnesses to the assaults to hand over any video they may have recorded.
What happened on Sunday?
It is unclear what triggered a fight which reportedly preceded the stabbing, at about 03:15 (01:15 GMT) on Sunday, on the sidelines of a street festival, which has now been cancelled.
The victim, a carpenter aged 35, was mortally wounded and died in hospital.
Two other German men with him, aged 33 and 38, were seriously hurt, police say.
The Syrian detainee is 23 and the Iraqi 22.
Police have denied rumours on social media that the fight was linked to the sexual harassment of a woman.
How did protests spread?
Initially, about 100 people gathered on Sunday for a rally which passed off without incident, AFP news agency reports.
However, some 800 people later gathered at the Karl Marx monument, a focal point in the centre of Chemnitz.
The monument is a throwback to the city’s days as a model socialist city in the former German Democratic Republic, when it was renamed Karl-Marx-Stadt.
It appears that such a large, angry demonstration took police by surprise.