Sao Paulo police on Tuesday night fired tear gas and stun grenades to disperse protesters upset over rising transport fares, sparking memories of the 2013 street clashes in Brazil, this year's Olympic host. Riot cops wanted to prevent demonstrators from moving from the spot where they were gathered at one end of the city's major Paulista Avenue.
That caused a stampede by the mainly young demonstrators, most of whom were gathered peacefully. Some had their faces covered. Television pictures showed some demonstrators who were injured.
The military police in the city said on Twitter that two people were arrested with explosive devices. Demonstrators carried signs denouncing the rise in public transport fares which took effect in the city on Saturday.
Many Brazilians are enduring hardship in a recession in the world's seventh-biggest economy.
The city government says that the rise in the price of a bus or train ticket from the equivalent of US$0.80 to about US$1.00 is less than the rate of inflation.
It was the second day of protests after similar demonstrations on Friday in Sao Paulo and other cities including Rio de Janeiro, which hosts the summer Olympic Games in August.
The incidents prompted memories of the riots that struck Brazilian cities in mid-2013 and, on a smaller scale, in mid-2014. Millions of people joined in the protests in 2013, which also started as demonstrations against rising transport prices. The unrest spread to channel anger about corruption and the hosting of the 2014 World Cup.