The National Assembly has adopted the Political Party Funding Bill, which will pave the way for political parties to declare who funds them.
The EFF objected to the bill and the DA supported its adoption, but with reservations.
The bill will be sent to the National Council of Provinces for concurrence.
ANC MP Vincent Smith, who chaired the ad hoc committee tasked with writing the bill, said it is long overdue.
He said the often-raised argument that donor's privacy must be safeguarded, at the expense of making them known to voters, "flies in the face of transparency".
"This Bill is about building a nation where the rand never reigns superior to the will of the people.
"The law must ensure that the narrow private interests of those with big bank balances, or who have easy access to party bosses, never usurps the will and interests of the general electorate or party supporters who might not be as monied," he said.
He added that the bill limited the amount that individuals or entities could donate to a political party to R15m in a calendar year.
DA MP James Selfe said, in light of the recent revelations about state capture, it was difficult to oppose the disclosure of parties' funders. He did, however, voice reservations.
"Not every politician is corrupt. And not every donor wants favours," he said.
He said, in the 20 years he raised funds for the DA, only once did a donor seek a favour.
"I told him to get lost," Selfe said.
He described the bill's civil and criminal sanctions as "savage".
According to Selfe, the bill doesn't deal with "the Gupta in the room", which is that politicians are not prosecuted for bribery in terms of current legislation.
"The bill will make it more difficult for honest parties to raise money honestly," he complained.
EFF MP Natasha Ntlangwini said the bill would "repeat political imbalances, without creating meaningful transparency".
The party opposed the bill because of a section which reads that "no person or entity may deliver a donation to a member of a political party, other than for party political purposes".
IFP MP Narend Singh said: "This bill is not going to stop corruption, but it is a step in the right direction."
FF Plus MP Corné Mulder said it was a good bill and suggested that parties which objected to the bill, like the EFF, should not get the money the bill would allocate to them.
His speech was interrupted while he and EFF MP Mbuyiseni Ndlozi labelled each other's parties as fascist.
ANC deputy chief whip Doris Dlakude pointed out that the DA and EFF were against disclosures, while the ANC championed it.
"This bill has nothing to do with state capture, unless you are very poor on ideology," she said.
She said, amid noise from the DA benches, that there was a public perception that the DA was funded by "foreign agencies, wanting to reverse our gains".
Agang MP Andries Tlouamma also supported the bill.
"We can't have political parties who are puppets for dangerous forces."
DA MP Alf Lees said that perhaps the EFF would like to explain the donations they received from "cigarette smugglers" to pay their party registration fee.
He said it was "poor South Africans who were again sucking on the hind tit", while public funds would be given to political parties.
Last year, the National Assembly adopted a motion to establish an ad hoc committee to inquire into, and make recommendations on, the funding of political parties represented in national and provincial legislatures, with a view to introducing amended legislation.
The bill is the product of this process.