Activists then made their way to the king's palace to deliver a list of demands, which was handed to a representative of the country's head of state.
Police said there were 10,000 protesters, but organisers said about 30,000 people were present. At least a dozen were reportedly arrested.
Anwar Ibrahim, the former deputy prime minister who was jailed for participating in protests in 1998 and is now a key opposition figure, attended the rally.
He later told Al Jazeera that the protests would continue "until and unless we receive a clear and categorical assurance by the prime minister and the cabinet to stop the vote-rigging and cheating."
"They have not come out with a clear statement [that they] will not cheat during the elections," he added.
Roadblocks and barricades were placed around the city on Saturday. A permit for the rally was refused by police.
"We will not hesitate to take action against those who defied our orders," Zul Hasnan Najib, Kuala Lumpur's police chief, said.
Abdullah Ahmad Badawi, the prime minister, said on Friday that the government would not tolerate street demonstrations.
"They are challenging the patience of the people who want the country to be peaceful and stable. That is what they are challenging, not me," he said at a ruling party meeting.
The rally has been organised by Bersih (Clean), a loose coalition of 26 opposition parties and non-governmental organisations.
The protesters say the electoral process disproportionately favours Abdullah's ruling coalition.