Protesters lit buses on fire, blocked roads and clashed with police on Friday during a general strike that brought transportation to a halt in many cities across Latin America's largest nation.
The strike was to protest major changes to labor law and the pension system being considered by Congress, but it was also a raw display of anger by many Brazilians fed up with corruption and worried about the future amid a deep recession and rising unemployment.
A peaceful protest by several thousand people in central Rio de Janeiro in the afternoon turned violent, with small groups smashing bank windows, erecting barricades and setting fires, including torching at least eight buses.
Police responded with barrages of rubber bullets and tear gas, which floated through the avenues and up into the high windows of office buildings.
In Sao Paulo, thousands marched toward the home of President Michel Temer, throwing rocks at police who shot stun grenades when protesters tried to go beyond barriers set up.
Millions stayed home, either in support of the strike or simply because they were unable to get to work. The tens of thousands who took to the street raised questions about whether Temer will be able to push his proposals through Congress, where they had previously looked likely to pass.
Temer's administration argues that more flexible labor rules will revive a moribund economy and warns the pension system will go bankrupt without changes. Unions and other groups called for the strike, saying the changes before Congress will make workers too vulnerable and strip away too many benefits.
In a statement Friday night, Temer characterized the protesters as "small groups" that blocked the roads and streets. He said his administration was working to help Brazilians workers overcome the country's economic malaise.
Earlier in the day, most commuter trains and metro lines were stopped in Sao Paulo during the height of morning commute, and all buses stayed off the roads. Buses ran partial service during the morning in Rio but later began returning to normal. The metro was closed for the day in the capital of Brasilia and Belo Horizonte, another major city. Curitiba, where Brazil's huge "Operation Car Wash" anti-corruption investigation is based, was left without bus services, as was the big northeastern city of Recife, local media reported.
The strike had the greatest effect in heavily unionized parts of the economy, including transportation, banks, schools, the post office and some hospital staff. The metallurgical workers' union said 60,000 members downed their tools.
Some protesters also set up barricades and started fires in the streets, including on roads heading to the main airports in Sao Paulo. In Rio, protesters created confusion by running through Santos Dumont Airport, and others blocked a major road.
Some plane mechanics joined the strike, according to the National Aeronautic Union, but the impact was minimal, with only a handful of flights canceled or delayed at the two cities' airports.
"We are demanding our rights, as workers, because the president of the country proposed a law for people to work more and live less, so you will only receive your pension when you die," said Edgar Fernandes, a dock worker who was protesting in Rio.
The CUT union said around 35 million Brazilians didn't show up for work on Friday, more than one-third of the working population. But government officials downplayed the strike, insisting that many Brazilians were still at work.
"We don't have a strike, we have widespread riots," Justice Minister Osmar Serraglio said on Joven Pam radio.
Brazil's economy is in a deep recession, and many Brazilians are frustrated with Temer's government. Temer, whose approval ratings are hovering around 10 percent, has argued the proposed changes will benefit Brazilians in the long run. He has said Brazil's economy faces a meltdown without severe fiscal discipline and belt tightening. His most controversial measure has been to curb pension costs by raising the retirement age to 65 for men and 62 for women, up from the current 60 and 55.
The government is also pushing for a liberalization of labor laws and has succeeded in getting Congress to pass a 20-year freeze on spending increases.
But with so many out of work, many feel they can ill afford any cuts to their benefits. Friday's strikes were one of the biggest protests to hit the Temer administration since he took over from impeached president Dilma Rousseff last August.
Her predecessor and mentor, the former leftist president Luiz Inacio Lula da Silva, praised the strike, Valor Economico website said.
"This is a clear demonstration that people are determined to paralyze (the country) in protest against the government's stripping away of their rights," the site quoted him as saying.
But not all Brazilians agree. Marcelo Faisal, a landscape architect travelling from Sao Paulo to Rio, said "reforms need to take place" and that the general strike did not live up to the hype.
"They didn't succeed in getting people to adhere to the strike, so they burned tires to block some points here and there, which just causes some disruption," he said.
The economy shrank 3.8 percent in 2015 and is expected to have contracted a further 3.5 percent in 2016, the most painful recession on record.
Meanwhile, the country is mired in a colossal scandal involving billions of dollars in kickbacks to politicians and other public officials. Over the last three years, dozens of top politicians and businessmen have been jailed in the so-called Car Wash investigation that has produced near daily revelations of wrongdoing.
Eight of Temer's ministers are under investigation and the president himself has been accused of chairing a meeting in which his PMDB party negotiated a $40 million bribe from the Odebrecht engineering conglomerate. Temer denies wrongdoing.
In one the largest demonstrations Friday, thousands of protesters gathered in front Rio de Janeiro's state assembly in the afternoon and were fighting pitched battles with police who tried to remove them. Police fired tear gas while protesters threw stones and lit small fires in the middle of streets.
In Sao Paulo, police told downtown shopkeepers to close early, apparently out of concern that protesters might head there. Throughout the day, 21 people were arrested in Sao Paulo, according to military police.
Underscoring the economic malaise, the IBGE statistics agency announced on Friday that unemployment had jumped to 13.7 percent in the first quarter of the year, up from 12 percent.
The anger over the proposed changes to benefits shows that Temer's government has failed to convince the people that the moves are necessary, said Oliver Stuenkel, who teaches international relations at the Fundacao Getulio Vargas university in Sao Paulo. And yet, the proposed laws have been moving fairly easily through Congress, and had been expected to eventually pass.
"This is a peculiar government that has low approval and still gets work done in Congress," he said. "But lawmakers also think of their re-elections next year. After today, there could be a bigger risk for Temer in getting any meaningful bills passed."