Turkish President Recep Tayyip Erdogan says 18,000 migrants have crossed Turkish borders into Europe after the country “opened the doors” for them to travel.
The number is expected to hit 25,000 to 30,000 in the coming days, he said.
Turkey could no longer deal with the amount of people fleeing Syria’s civil war, he added.
Greece says it has blocked thousands of migrants from entering “illegally” from Turkey.
Greek authorities fired tear gas to attempt to disperse the crowds.
Turkey’s decision followed a deadly attack on Turkish troops by Syrian government forces in northern Syria this week.
At least 33 Turkish soldiers were killed in a bombardment in Idlib, the last Syrian province where Syrian rebel groups hold significant territory.
Syrian government forces, supported by Russia, have been trying to retake Idlib from jihadist groups and Turkish-backed rebel factions.
Turkey is hosting 3.7 million Syrian refugees, as well as migrants from other countries such as Afghanistan – but had previously stopped them from leaving for Europe under an aid-linked deal with the EU.
But Mr Erdogan accused the EU of breaking promises.
“We said months ago that if it goes on like this, we will have to open the doors. They did not believe us, but we opened the doors yesterday,” President Erdogan said in Istanbul on Saturday.
He said that some 18,000 refugees had “pressed on the gates and crossed” into Europe by Saturday morning. He did not provide evidence of these numbers.
“We will not close these doors in the coming period and this will continue. Why? The European Union needs to keep its promises. We don’t have to take care of this many refugees, to feed them,” he said.
Brussels had not given full financial aid agreed in the 2018 Turkey-EU refugee deal, he said.
Greece said it had averted more than 4,000 attempts to cross into the country. There were further clashes between migrants and Greek police on Saturday.
“The government will do whatever it takes to protect its borders,” government spokesman Stelios Petsas told reporters.
The Turkish president also said that he had asked Russian President Vladimir Putin – a close ally of Syrian President Bashar al-Assad – to stand aside and let Turkey “do what is necessary” with the Syrian government by itself.
Russia and Turkey are backing opposing sides in the civil war. Turkey is opposed to the government of Bashar al-Assad and supports some rebel groups.