Kjartan Sekkingstad appeared gaunt and frail as he was handed over to a government envoy along with three Indonesian seamen who had been held captive with him.
"I am so very happy and lucky to be alive," Sekkingstad, heavily bearded and wearing a camouflage jacket, told reporters in the town of Indanan on Jolo island before being flown to meet the Philippine president.
Sekkingstad was abducted from a high-end tourist resort he managed in September 2015 by notorious kidnappers-for-ransom the Abu Sayyaf.
Two Canadians taken hostage at the same time, John Ridsdel and Robert Hall, were later beheaded by the group after a ransom demand of about 300 million pesos ($6.5 million) was not met.
Sekkingstad showed press his backpack with his rubber slippers, plastic water jug and other items he used during confinement, saying that he would never lose these "souvenirs." He also thanked Philippine leader Rodrigo Duterte.
The Abu Sayyaf freed the Norwegian on Saturday, handing him over to another Muslim rebel leader Nur Misuari, whose group assisted in the release and at whose camp he spent the night, according to the government.
Escorted by a small contingent of Jolo police on Sunday, Misuari, government envoy Jesus Dureza, the freed captives and local officials met in a building surrounded by hundreds of Misuari's fighters from the Moro National Liberation Front before leaving for a military camp.
Sekkingstad and Dureza were then transported to an airbase where a plane flew them out to the southern city of Davao for a meeting with Duterte.
The three freed Indonesians were taken to the nearby city of Zamboanga where a retired Indonesian general was waiting to pick them up. It was still unclear if they were the same seamen kidnapped by armed men off a fishing trawler in Malaysian waters in July.
- 'No ransom' -
Norwegian foreign affairs communications chief Frode Andersen told AFP by phone that "the Norwegian government does not pay ransom in this case or any other case".
Duterte's spokesman Martin Andanar also said in Manila that "the government maintains the no-ransom policy".
"Now, if there is a third party like [Sekkingstad's] family that paid, we do not know anything about that," he told reporters.
However a spokesman for the Abu Sayyaf was quoted in a local newspaper on Sunday as saying the group received 30 million pesos (about $625,000) for the Norwegian.
The Abu Sayyaf is a loose network of militants formed in the 1990s with seed money from Osama bin Laden's Al-Qaeda network. It is based in remote Muslim-populated southern islands in the mainly
Catholic Philippines, and has earned millions of dollars in ransom from kidnappings -- often targeting foreigners.
While its leaders have in recent years pledged allegiance to the Islamic State group, analysts say the Abu Sayyaf is mainly focused on a lucrative kidnapping business rather than religious ideology.
The group, which is blamed for the worst terror attacks in Philippine history and is listed by the United States as a terrorist organisation, has been the target of a military operation since August.