Moscow has seen its largest opposition protest since President Vladimir Putin's inauguration to a third presidential term in May 2012.
Thousands also demonstrated in St. Petersburg and other Russian cities on September 21 against what they say is a covert Russian war in eastern Ukraine.
According to SONAR, an independent monitoring group that counted protesters passing through security checkpoints, more than 26,000 gathered for the Moscow march.
Putin and his government have repeatedly denied sending Russian troops or weapons into eastern Ukraine to support pro-Russian separatists.
But those claims are increasingly met with skepticism within and outside of Russia.
Aleksandr Ryklin of the opposition Solidarity movement said the slogan for all of the September 21 marches across Russia was: "Putin, enough lying and making war!"
Yelena Volkova, a protester in Moscow, said the Russian authorities should "stop this outrageous covert war that they don't admit" waging.
Banners at the Moscow rally said: "Putin, I'm sick of your lies," "Don't shoot our brothers," and "I don't want a war with Ukraine."
Photo gallery: Scenes from today's demonstration in Moscow:
Daria Nikolayeva is a 55-year-old Russian school teacher who carried a portrait to the Moscow rally of Nikolai Krygin, a Russian paratrooper who allegedly was killed during a battle in Ukraine.
Nikolayeva told RFE/RL's correspondent in Moscow that a precedent was set by Russia's deployment of military forces across Ukraine's Crimea Peninsula in March and Russia's speedy annexation of Crimea through an illegal referendum.
She said she was "not only against us sending our troops to Ukraine, but also against us interfering whatsoever in the matters of other sovereign states."
The Moscow march was formally approved by city officials.
It began in the early evening at Pushkin Square in the city center, with protesters walking along nearly 4 kilometers of roadway.
The Moscow protest passed off peacefully, despite the presence of pro-Russian separatist supporters along the route – some of whom threw raw eggs at the demonstrators.
There were minor scuffles, but no reports of serious violence and no immediate reports of arrests.
In St. Petersburg, more than 1,000 people gathered outside the Kazan Cathedral to participate in a rally, which was not sanctioned by the authorities.
About 100 antiwar protesters who gathered in the Russian city of Yekaterinburg were jeered by hecklers who support eastern Ukraine's pro-Russian separatists.
In the Siberian city of Barnaul, at a small unsanctioned demonstration, local activist Artyom Kosaretsky reportedly was assaulted and detained by authorities after holding up a sign saying "Siberia against war."
The protests coincided with the United Nations' annual International Peace Day.