The protests on Sunday could deepen a political crisis that has given rise to calls for Rousseff`s impeachment for not stopping a multibillion-dollar graft racket at Petroleo Brasileiro SA, as the oil company is formally called.
Police said 12,000 people blocked one of the main avenues of Sao Paulo, Brazil`s largest city, marching in the rain to defend the state-run oil company and worker rights threatened by belt-tightening economic policies.
"Dilma stays," read banners held by followers of the Communist Party of Brazil, a Rousseff coalition member.
Turnout in other Brazilian cities was smaller. There were no reports of violence.
The demonstrators had contradictory slogans. While backing Rousseff, the unions called for the withdrawal of her measures to reduce unemployment and pension benefits, part of an austerity plan she has had to adopt to bridge a gaping fiscal deficit and save Brazil from a credit rating downgrade.
"We are here to defend Petrobras from the thieving," said Ronaldo dos Santos, a security guard who was driven seven hours in a convoy of 30 buses from the oil industry city of Campos to join the demonstration in Rio de Janeiro. He said the corruption at Petrobras began before the Worker`s Party took power in 2003.
The graft investigation has led to 40 indictments on racketeering, bribery and money-laundering charges, including two former Petrobras senior managers and 23 executives from six of Brazil`s leading construction and engineering firms.
Prosecutors say the companies paid huge kickbacks on overpriced contracts with Petrobras and the funds were divided between corrupt managers and politicians. Most of the alleged corruption occurred when Rousseff was chairwoman of the Petrobras board. She has denied knowing about the graft scheme.
Brazil`s main opposition party, the centrist PSDB, has endorsed the protests against Rousseff called for Sunday afternoon. But the party says it does not back her impeachment.
Growing political uncertainty further weakened Brazil`s currency on Friday. The real hit 3.28 per dollar, its weakest level since April 2003.