As many as 200,000 people have marched through the streets of Brazil's biggest cities, as protests over rising public transport costs and the expense of staging football's 2014 World Cup spread.
Demonstrations were reported in as many as 11 cities on Monday and are the largest seen in Brazil for more than 20 years.
The trigger was a increase in the price of a single bus fare in Sao Paulo on 2 June from 3 reals ($US1.40) to 3.20. Authorities said the rise was well below inflation, which since the last price increase in January 2011 has been 15.5%, according to official figures.
Brazil is also to host the Olympics in 2016, but many people are now complaining that vast sums of money are being wasted instead of used for health and education. Political leaders have also been accused of nepotism and corruption, the BBC reports.
The biggest demonstrations were in Rio de Janeiro, where 100,000 people joined a mainly peaceful march.
However some threw rocks at police, wounding five officers, set fire to a car and vandalised the state assembly building, starting a small blaze. Police reportedly used tear gas, pepper spray and rubber bullets to disperse them.
Demonstrators chanted slogans, including "The people have awakened".
There were also clashes with police in Belo Horizonte, which was hosting the latest game in the Confederations Cup, the warm-up tournament for the World Cup.
In the capital, Brasilia, people breached security at the National Congress building and scaled its roof. After negotiations with police, the crowd agreed to leave.