More than 22,000 people packed a Moscow square Saturday to demand free and fair local polls, incensed by the authorities' refusal to put popular opposition candidates on the ballot.
Staging their largest protest rally in years, opposition leaders such as President Vladimir Putin's top opponent Alexei Navalny and ordinary Muscovites gathered after authorities refused to register independent candidates seeking to contest the September vote for the capital's parliament.
"This is my city!" the crowd chanted during the two-hour-long sanctioned rally.
"We will show them this is a dangerous game," Navalny bellowed from a stage.
"We should fight for our candidates," he said as the huge crowd cheered and waved Russian flags.
The 43-year-old threatened an even bigger rally next week, near the mayor's office, unless Moscow's electoral authorities register within seven days a new crop of popular politicians including Ilya Yashin and Lyubov Sobol.
"We will not give up!" added Navalny ally Sobol, who has been on a hunger strike for a week to protest the authorities' refusal to allow her to run.
"I am sure that we will win," said a visibly fatigued 31-year-old lawyer, propped up by an ally on stage.
Many ordinary Russians have slammed what they called the blatant impunity of officials, saying people's patience was running thin.
"We are angry at the lawlessness," Alexander Polovinkin, a 21-year-old student, told AFP.
"I want us to live in a free country," said another protester, Elena Vaulina, a 51-year-old driver.
Many protesters took direct aim at the 66-year-old Putin, who has brooked no dissent during his two decades in power.
"Putin lies," said one placard at the rally. "Stop lying to us," read another one.
Popular opposition candidate Ilya Yashin, who is a local councillor, said Putin must go. "I've lived half my life under Putin. I've had enough," the 36-year-old said.
Fellow opposition contender Dmitry Gudkov, who was also disqualified, accused the authorities of stealing not only people's money and votes but their very future.
"We've been living in an occupied country for the past 20 years," he said.
White Counter, an NGO that tracks participation in protest rallies, said about 22,500 people took part in Saturday's rally.
Navalny said on Twitter it was the largest protest rally he attended since 2012 when tens of thousands protested election fraud during parliamentary polls.
Police, which downplays turnout at opposition rallies, said 12,000 turned up.
Observers said that never before have Russians turned up in such great numbers to demand access for their candidates in local elections.
Opposition politicians fought tooth and nail to get on the ballot paper as they seek to capitalise on popular discontent with the Russian authorities, Putin's falling approval ratings, and anger over declining living standards and unchecked corruption.
They were made to jump through countless hoops, and each had to collect 5,000 signatures to be eligible.
Electoral authorities this week still refused to register the opposition candidates, accusing them of faking some of the signatures.
Critics said some of the officials' reasoning bordered on the absurd.
The Kremlin dismissed the opposition's complaints, but many Russians are furious at what they perceive as electoral interference.
The opposition candidates staged smaller daily rallies throughout the week.
Many have also taken to social media in recent days to post messages or videos to prove they were not "dead souls."
At Saturday's rally, some protesters waved their passports in the air, chanting "We have come!" Greg Yudin, a lecturer at the Higher School of Economics, who supported an independent candidate but whose signature was not recognised, said he was surprised to discover - along with thousands of other Muscovites - that he apparently did not exist.
"All of us are ghosts. We are the nobodies," he said on Facebook this week.
Political observer Kirill Rogov said the independent candidates' exclusion was "one of the largest frauds in Russia's electoral history".
"We are witnessing a major large-scale crime," he wrote on his blog.
Some 7.2 million Muscovites are eligible to elect 45 lawmakers to the local parliament, currently dominated by the United Russia ruling party.