The African National Congress held on to most wards in Mbhashe municipality, in the Eastern Cape, where long-running internal strife in the party had forced the vote.
However, the United Democratic Movement and an independent candidate wrested two of the 12 contested wards in Dutywa away from the ruling party in Wednesday’s by-elections.
The by-elections were called after the ANC expelled a dozen councillors for removing the mayor of Mbhashe municipality without its blessing.
The councillors ousted acting mayor Pumza Dyantyi, less than a year after former mayor Fezeka Mvana was expelled from the ANC for corruption, allegedly for issuing improper infrastructure tenders worth millions of rands.
Local government in Mbhashe has been in turmoil since 2011, with loyalties in the ruling party divided between the mayor and the speaker.
Two by-elections — held in Vereeniging in Gauteng, and in Vredendal in the Western Cape — were won on Wednesday by the Democratic Alliance and the ANC respectively.
Both wards were previously governed by DA councillors who resigned, prompting the by-election and seeing the party displaced in the one by the ANC.
The DA retained Ward Three in Buffalo City in East London taking 82 percent of the ballot.
The by-election was called after a councillor’s membership was terminated. It was contested by the DA, the ANC and the UDM.
However, voter turnout was only 16 percent, and the by-election in Vereeniging registered only a slightly higher showing, with 25 percent.
In Dutywa, voter turnout in the different wards ranged between 30 and 60 percent.
The ANC managed to hold on to Ward Seven in Elundini municipality in Mount Fletcher. The ward became vacant when the ANC councillor died, and was contested by the ruling party and the African Independent Congress.