Germany received 280,000 asylum seekers in 2016, the Interior Ministry says, marking a sharp drop from the previous year.
In 2015, at the height of Europe's migration crisis, Germany took in 890,000 people - over three times the number registered the following year.
"This shows that the measures taken by the government and the European Union are effective," Interior Minister Thomas de Maiziere said on announcing the figures.
"We have managed to bring migration under control and steer it," he added.
Syria remains the most common country of origin as people flee the devastating civil war there. Other asylum seekers came from countries like Afghanistan, Iraq, Albania and Eritrea.
Chancellor Angela Merkel's government has significantly toughened its migration stance since September 2015, when she opened Germany's doors to refugees and migrants stranded in Hungary, many of who were fleeing war in the Middle East.
While praised at the time across Europe for her controversial decision, Merkel suffered in the polls at home as frustration grew over the unabated arrivals.
The decline follows the closure of the so-called Balkan route from Greece to wealthier countries further north, as well as a deal between the EU and Turkey to reduce arrivals via the Aegean Sea.
Despite the drop in numbers, Germany is still playing catch-up on registering asylum applications due to a bureaucratic backlog.
The number of applications actually made increased in 2016 to 745,545, compared to 476,676 in the previous year. Many of the 2016 applicants had entered the country in 2015.