At the end of a month-long dispute, Merkel's three-party coalition agreed to a compromise under which the number of asylum-seekers in the country will be reduced.
The parties in power — Merkel's centre-right CDU, the hardline conservative Bavarian CSU ally and the centre-left Social Democrats (SPD) — agreed on a “reorganisation of asylum policy” in Germany, SPD chief Andrea Nahles said after a summit meeting in Berlin, adding that it was a “good solution”.
The SPD had earlier declined to endorse new policies put forward by Merkel in a bid to put down a rebellion by Interior Minister Horst Seehofer of the CSU.
In high-stakes crisis talks overnight Monday to Tuesday, Merkel advocated tightening border controls and setting up closed “transit centres” to hold migrants on the Austrian frontier.
But the deal, which essentially amounted to an about-turn in Merkel's liberal refugee policy, immediately sparked resistance from Germany's neighbours as well as the SPD.
Merkel's decision in 2015 to open Germany's borders to asylum-seekers, many fleeing war in Syria and Iraq, has deeply divided the country and its neighbours.
Since then, popular misgivings over the migrant influx have given populist and anti-immigration forces a boost across several European nations, including Italy and Austria where far-right parties are now sharing power.
The simmering resentment in Germany erupted in June when Seehofer threatened Merkel with an ultimatum to curb arrivals, sparking the worst political crisis of her government of just barely 100 days.