Tens of thousands have attended Moscow’s largest opposition rally since 2011, independent monitors say.
Up to 60,000 people reportedly gathered in the rain to demand fair elections.
The protest was officially authorised but dozens of people were arrested as they moved to other parts of the city, many outside President Vladimir Putin’s offices in the city centre.
Unauthorised rallies on the last two Saturdays saw hundreds detained. This is the fifth demonstration in a month.
Many Muscovites are unhappy that opposition candidates have been banned from running in municipal elections in September, but anger has increased after apparent incidences of police brutality in previous weeks.
Protests in solidarity with Moscow in several other Russian cities on Saturday also saw dozens of people detained.
This protest and one on 20 July were authorised by the city authorities.
The latest arrests took place after groups of demonstrators left the official rally outside the city centre. Protest leaders had encouraged people to join an unauthorised “stroll” afterwards.
An organisation that tracks participants in demonstrations, The White Counter, counted 49,900 people at the authorised march in Moscow.
But it later said more people had arrived through side streets, boosting numbers above 50,000.
Police estimated a lower turnout figure of 20,000.
Some protesters carried placards with slogans such as “Give us the right to vote!” and “You’ve lied to us enough”.
Others held up pictures of activists arrested at earlier demonstrations.
Opposition politician, Lyubov Sobol, an ally of Kremlin critic Alexei Navalny, was detained by police ahead of the protest.
Around 600 people were arrested after an unauthorised protest last weekend, amid reports of police violence. More than 1,000 were detained the week before.