The unanimous decision of the High Court's six judges was a blow to the government's contentious policy of refusing to allow any asylum seekers who arrive in people smugglers' boats to ever settle in Australia.
The Pakistani, who cannot be named, arrived at the Australian Indian Ocean territory of Christmas Island in 2012. Australia runs an immigration detention camp on the island for boat arrivals instead of bringing them to the Australian mainland.
Morrison reconsidered his decision, but triggered another court battle by refusing the man's refugee application "in the national interest" because the man had arrived by boat.
The High Court ruled that Morrison's refusal was not lawful and ordered the current Immigration Minister Peter Dutton to grant the man a permanent protection visa.
Thousands of asylum seekers from the Middle East and Asia have made long journeys to Australia. The journey often ends in rickety boat trips from Indonesian ports organised by human traffickers.
The minor Greens party, which opposes the government's refugee policy, applauded the court's decision.
"The minister should have recognised Australia's international obligations and granted this man a protection visa when he was found to be a refugee," Greens Sen. Sarah Hanson-Young said in a statement.
