In a special joint session of the House and the Senate, legislators overwhelmingly backed Duterte's bid to have martial law remain in force in the Mindanao region until December 31.
The vote came as troops continued their two-month long fight to wrest back the southern city of Marawi from Islamic State-inspired militants.
Duterte first declared martial law in Mindanao on May 23 shortly after the gunmen, waving the black flags of the Islamic State group, occupied parts of Marawi, triggering weeks of bloody fighting.
The vote was largely a foregone conclusion as Duterte enjoy majorities in both houses of Congress.
Philippines' Duterte says he'll never visit 'lousy' America
But opposition lawmakers dragged out the debate, questioning why martial law was needed for the whole of Mindanao when the fighting was limited to only one city.
"I fear that the plan to extend the martial law in Mindanao will pave the way for a Philippines-wide martial law," said Senator Risa Hontiveros ahead of the vote.
A slide presentation accompanying Duterte's request, seen by AFP, compared the Marawi crisis to the Islamic State takeover of the Iraqi city of Mosul.
Marawi itself could now become a magnet for foreign fighters in Iraq and Syria, it said.
Most of the militants' leaders remain at large, the presentation added, while about 90 of the gunmen have slipped past security cordons and can link up with other armed groups in the region to mount similar widescale attacks.
At the hearing, defence and security officials justified the extended martial law, saying that aside from Marawi, militants were planning attacks in other parts of Mindanao.
They said almost a thousand pro-IS militants, holding 23 hostages, were still active elsewhere in the south.
In Marawi, the military said only about 60 gunmen were left in a 49-hectare (121-acre) area of Marawi, but Duterte said he needed martial law powers to rebuild the city and ensure the war did not spread elsewhere.
"I cannot afford to be complacent," Duterte told reporters Friday, adding the military would be conducting further "mopping up operations" even after they recapture Marawi.
"If there is a spillage it will not be as bad if you have this stopgap," he added.
Duterte imposed 60-day martial rule -- the maximum period allowed by the constitution -- over the Mindanao region on May 23 within hours of the gunmen beginning their rampage.
On Monday he asked Congress to extend it until the end of the year, along with the continued suspension of a constitutional safeguard against warrantless arrests.
Martial law allows the military to establish control with measures such as curfews, checkpoints and gun controls in a country where civilians are authorised to keep licensed firearms in their homes.
However, any martial law extension must be approved by Congress.
The subject remains sensitive in the Philippines, decades after the late dictator Ferdinand Marcos put the country under military rule for part of his 20-year term.
Thousands of critics, political opponents as well as communist guerrillas were killed, detained or arrested during the period, according to historians.
About a dozen protesters in the gallery interrupted Saturday's hearing, chanting "never again, never again to martial law" before being escorted out.
Philippines puts big casinos on money-laundering watch
Duterte had already beaten back a Supreme Court petition to declare martial law in Mindanao illegal.
"Once he feels that there is not enough opposition to a nationwide martial law declaration, he will go for it," Senator Antonio Trillanes told AFP on Tuesday.
This is part of a bid to stay in office beyond his mandated six years, he warned.
Duterte, 72, insists he has no plan to stay in office beyond his term.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ