Major General Alfredo Cayton said in a radio interview on Monday that the bodies had been found, but could not confirm who carried out the killings.
"Our army troopers have reached the area where the vehicles and those held were taken ... they were shot by the armed men," Cayton said.
"We have recovered 21 bodies. Our men are continuing to scour the area to find the others," he said.
Hostage-takers earlier seized 29 people, among them the wife of Esmael Mangundadatu, a local mayor, his aides, supporters and journalists.
Military officials said Mangundadatu's wife was among the dead.
The journalists taken captive were accompanying Mangundadatu's group to a local elections office to file his candidacy for governorship of the predominantly Muslim Maguindanao province in the autonomous Mindanao region in the May 2010 vote when they were captured by the kidnappers.
The Mangundadatu family is known to have a long-running feud with the family of Andal Ampatuan, Maguindanao's incumbent governor.
Marga Ortigas, Al Jazeera's correspondent in the Philippines, said the families were well known to be political rivals.
"This particular governor position is hotly contested because it is the seat of the autonomous region of Muslim Mindanao and the incumbent has been there for years."
Lieutenant Colonel Romeo Brawner, a military spokesman, said that the hostage-takers had links to Amputuan.
Brawner said there were about 100 armed men, most of whom were deputised as government guards by Ampatuan's family.
He said the leader of the group that staged the kidnapping was one of Ampatuan's sons.
Ampatuan was not immediately reachable for comment.
Ortigas noted that Maguindanao was one of the most politically tense provinces in the country.
"It is the site of three different armed insurgent movements," she said.
"Elections in the Philippines over the last few years are becoming more and more violent, particularly in the area."