Around 5,000 police officers were deployed in Dortmund to keep far-right protesters from clashing with counter-demonstrators. Riot teams were on standby in case of post-rally confrontations.
An estimated 900 far-right protesters marched Saturday afternoon through Dortmund in western Germany - completely flanked by teams of riot police throughout the roughly 5-kilometer (3-mile) route.
The neo-Nazis labeled their rally the "Day of a German future" and drew supporters from all across the country and abroad. Members of the ultra-right-wing National Democratic Party (NDP) and Die Rechte (The Right), which was formed in 2012, also took part. Both parties hold one seat each in Dortmund's city council.
The protesters chanted nationalistic slogans, but their first rally unfolded peacefully.
The neo-Nazi groups initially wanted to rally through neighborhoods with high numbers of immigrants, but that request was denied. Instead, their supporters posted leaflets around the city in the days before the march.
As many as 5,000 people took part in counterdemonstrations on similar routes around a kilometer away from the Nazi group. Leftist, civil society and pro-immigration groups held up signs calling on the far-right group to leave.
Alternative rallies well-attended
"We don't want them!" said Antje Weirauch, a spokesperson for a Dortmund-based church group. "They should just get over their extreme beliefs. It (Nazism) happened in the past, and it all went horribly."
Weirauch said that the far-right was spreading fear among ordinary Germans in light of the migrant crisis and that it was up to civil society to "call for multi-culturalism and tolerance."
An artists' collective, which formed part of the main counterdemonstration, created a "Spiegelbarricade" (a mirror blockade) formed from around a hundred giant silver cubes. Many of them were carried along the protest route, while others were placed at key locations around the city.
"They (the Nazis) are talking about their 'day of German future,' but we would like to see a future for Germany that is peaceful," Michael Eickhoff, who works with the group that created the blockade, told DW.
Far-left protesters held a separate rally, which was kept away from the moderate anti-Nazi demonstration. At one point, there were jeers as the extremists passed under a bridge the larger protest group stood on.
Earlier in the day, during the protest by leftist groups, more than a dozen people were pepper-sprayed after trying to cross police lines.
"We weren't running at them or shouting," complained Max, a protester from the wider North Rhine-Westphalia region, who said he still felt a burning sensation from the spray two hours later.
"They didn't give us any warning," added another protester, Julia.
The pair said around 20 people were affected, including three who were taken to hospital. Local media reported that three police officers were injured during minor scuffles with leftist protesters.
Police were out in force throughout the city, and public transport was either re-routed or cancelled for the duration of the protest. Riot teams remained on standby into the evening in case of sporadic violence after the protests had ended.
Artists' "mirror blockade" - one way activists sent a signal of opposition to the extremist protesters
Some residents asked why the far-right groups were given permission to protest in the first place, given the heightened sensitivities after Germany welcomed more than 1.2 million new migrants last year.
Although the far right and neo-Nazism are often associated with places in eastern Germany, Dortmund has a growing far-right movement, emboldened by the massive influx of migrants over the past 12 months.
In 2014, two neo-Nazi parties won a seat each on the city council, and within weeks, one councillor had demanded that the mayor hand over a list of all Jews living in the area.
Less extreme right-wing political groups, including the Alternative for Germany (AfD), have also gained support over the past 18 months.