South Africa's governing ANC party has lost control of the country's largest city and economic centre, Johannesburg.
The city council elected as mayor Herman Mashaba from the opposition Democratic Alliance (DA).
The ANC had run the city since the fall of apartheid more than 20 years ago. It lost its council majority in local elections, although it is still the largest party.
The party has also lost control of the capital Pretoria and Cape Town.
It follows local elections earlier this month that produced no outright winner in most districts, resulting in hung municipalities and forcing parties to form coalitions to govern.
Of the country's six biggest cities, the ANC only won an outright majority in Durban, seen as a stronghold for South African President Jacob Zuma.
There was drama at Monday's Johannesburg council meeting, which lasted 11 hours.
A scuffle broke out between opposition party members and electoral commission officials and an ANC councillor who was sworn in earlier in the day collapsed and died shortly after Mr Mashaba was elected.
The ANC had won 44.5% of the vote, more than the DA's 38.4%. But the left-wing Economic Freedom Fighters (EFF) with 11% found itself in the position of kingmaker and refused to give its votes to the ANC.
Mr Mashaba, a 56-year-old businessman, has promised to reform the city administration.
"As of this evening, corruption is declared public enemy number one in this city," he told cheering supporters.
"Under the DA-led administration, public monies that have been misspent, misused, over the last five, 10 years or so ... we're going to take this money, we're going to look after it, so that we can provide basic services to our people."
Mr Mashaba also pledged to tackle unemployment.
"Over 800,000 of our residents, one-in-three, are today unemployed. We need to address this and we need to address this as a matter of urgency."
Latest Stories
-
Samson’s Take: Arrogance of Power, Shameful Policing
2 hours -
Burnley score late to draw with Manchester United at Old Trafford
5 hours -
Bayer Leverkusen extend unbeaten run to 46 games after draw with Stuttgart
5 hours -
Chelsea come from two goals down to draw against Aston Villa
5 hours -
Andre Ayew scores in Le Havre’s 3-3 draw with PSG
5 hours -
GPL 2023/24: Kotoko draw with Medeama; Samartex go 7 points clear of Nations FC
5 hours -
Mahama cuts sod for construction of new multipurpose Jakpa palace in Damongo
5 hours -
NSS management assists Papao fire victims
6 hours -
EXPLAINER: Will dumsor end soon?
6 hours -
IMANI Africa takes on EC, accuses it of lying and publishing half truths
7 hours -
Manasseh Azure calls for investigation and prosecution of those responsible for GRA/SML contract
8 hours -
Kwesi Atuahene: Ghana’s health capital depends on HealthTech – Africa Center for Digital Transformation
8 hours -
13 signs your wife is planning on leaving you and you have no idea
8 hours -
IMANI Africa: Ghana’s EC’s dangerous and pathological conduct
8 hours -
If I speak there will be fire – Salah on Klopp row
9 hours