Turkey's ruling party has lost control of Istanbul after a re-run of the city's mayoral election, latest results show.
The candidate for the main opposition party, Ekrem Imamoglu, won 54% of the vote with nearly all ballots counted.
He won a surprise victory in March which was annulled after the ruling AK party complained of irregularities.
His opponent, ex-PM Binali Yildirim, has conceded. President Recep Tayyip Erdogan congratulated the winner.
"I congratulate Ekrem Imamoglu who has won the election based on preliminary results," he tweeted.
But the result is being seen as a major setback for Mr Erdogan, who has previously said that "whoever wins Istanbul, wins Turkey".
In his victory speech, Mr Imamoglu said the result marked a "new beginning" for both the city and the country.
"We are opening up a new page in Istanbul," he said. "On this new page, there will be justice, equality, love."
He added that he was willing to work with Mr Erdogan, saying: "Mr President, I am ready to work in harmony with you."
Imamoglu's lead of more than 775,000 votes marks a huge increase on his victory in March, when he won by a margin of just 13,000.
President Erdogan - the most powerful leader Turkey has seen in modern times - has just been dealt the biggest blow of his career.
This result shows that he made an incredible miscalculation by calling for the election to be re-run.
It will likely hasten splits in his ruling AK party and amplify talk of the post-Erdogan era. He will stress that he's in power for the foreseeable future - elections are not scheduled until 2023 - but many will expect them earlier.
The result in Istanbul feels like it could be a precursor to them.
So how did the opposition win? Ekrem Imamoglu gave people the profoundly positive message they craved and rebuffed smears with smiles.
It was hugely effective, and showed the opposition Republican People's Party (CHP) has finally worked out how to counter the president.
They have waited 25 years to control this city and have long felt incapable of success. They are savouring this moment - after all, it could be a watershed one.
BDST: 0912 HRS, JUNE 24, 2019