Violence broke out at a protest against anti-Covid measures in Brussels on Sunday, in which police said tens of thousands of people took part.
The march began peacefully but police later fired water cannon and tear gas in response to protesters throwing projectiles, an AFP photographer witnessed.
AFP also saw at least two police injured in the events, as officers in riot gear charged the crowd backed by water cannon. One protester was seen being evacuated by an ambulance near the Berlaymont, the EU headquarters.
Police told Belga news agency that three police officers were injured in the rioting, without giving further details.
Several of the demonstrators caught up in the clash wore hoods and carried Flemish nationalist flags, while others wore Nazi-era yellow stars.
Protesters set fire to wood pallets, and social media images showed rioters attacking police vans with vandalised street signs.
The stand-off with riot police took place throughout the Belgian capital's EU and government district, just metres (yards) from the US and Russian embassies.
Police said 42 people were briefly detained, while two were arrested. By 1700 GMT, authorities said the situation was under control with streets reopened.
Police said 35,000 protesters marched from the North Station in Brussels against a fresh round of Covid measures announced by the government on Wednesday.
The demonstration, called "Together for Freedom", largely focused on a ban on the unvaccinated from venues such as restaurants and bars.
Europe is battling another wave of infections and several countries have tightened curbs despite high levels of vaccination, especially in the west of the continent.
Belgium, one of the countries hit the hardest by the latest wave, on Wednesday expanded its work-from-home rules and strengthened curbs targeting the unvaccinated.
With an average of nearly 10,300 new infections per day over the past week, Belgium is back to a rate of spread of the virus that has not been seen for a year.
Belgium also recorded 42 Covid deaths on Friday.