Police put attendance at 15,000 while organisers said it was more than double that.
Despite the rain, the Homeless Workers Movement said the rally late yesterday was among the biggest in weeks of protests in Brazil as the country prepares to host the World Cup in three weeks' time and the Summer Olympics in 2016.
"We are here to protest against the Cup, against the huge spending on the World Cup while we do not have housing or healthcare or anything else," said Luiz Giovani, a member of the movement.
Banners carried by demonstrators included some that said "FIFA go home", in reference to football's world governing body.
Also Read
It was the latest in a series of demonstrations in recent weeks by the homeless movement.
The World Cup will cost Brazilian taxpayers USD 11 billion.
Earlier yesterday commuters in Sao Paulo faced huge traffic jams caused by a paralysing bus drivers' strike.
The two-day protest stranded more than a million passengers and unleashed transit chaos on the economic hub of Brazil.
Most buses were running again after city officials and the transport union reached a deal with drivers to end the strike at midnight.
The drivers were rebelling against their own union, which had agreed to a 10-percent pay increase in negotiations with management. They wanted more.
Brazil has faced a wave of strikes and protests in the run-up to the games and elections in October. Police, teachers and bank security guards have all gone on strike in recent weeks.