The allegation was made by Edgar Matobato, a self-confessed former death squad member, before a Senate inquiry on extra-judicial killings.
Mr Duterte, he alleged, ordered him and others to kill about 1,000 criminals or political rivals over a 25-year period.
A spokesman for Mr Duterte denied the allegations.
Presidential spokesman Martin Andanar said investigations into the president’s time as mayor had gone nowhere.
Mr Matobato, 57, said he had been a member of the Davao Death Squad, a notorious vigilante group allegedly responsible for hundreds of killings.
“Our job was to kill criminals like drug pushers, rapists, snatchers,” he said.
But he also said that Mr Duterte’s opponents had been targeted too, including four bodyguards of a local rival for mayor, Prospero Nograles.
In 1993, he said his group had injured a justice department agent after a confrontation at a road block.
“Mayor Duterte was the one who finished him off,” he said.
“Jamisola [the justice department official] was still alive when he [Duterte] arrived. He emptied two Uzi magazines on him.”
Victims would be shot or strangled, he said, with some disembowelled and dumped into the sea so fish could eat them, or in one case fed to a crocodile.
He told the Senate panel he had gone from a witness protection programme into hiding when Mr Duterte became president, fearing for his life. -BBC