Women and children were among those killed in the blast at the market in Jamrud, the main town in Khyber.
The explosion took place close to the offices of the tribal administration. The injured have been taken to hospital in the nearby city of Peshawar.
No group has said it carried out the attack as yet.
The bombing comes a day after a 15-hour stand-off between militants and security forces in the vicinity of Peshawar airport, located just about 10km (six miles) east of Jamrud town.
At least 10 militants were killed in the clash, many of them ethnic Uzbek fighters, officials said. The Pakistani Taliban said they carried out that attack.
‘Ball of fire’
The powerful blast in Khyber destroyed vehicles and damaged buildings in the market area.
Explosives were planted in a vehicle parked in an area of the market with a number of automobile workshops.
It is unclear what the target of the attack was although the blast took place close to the office of the assistant political agent for Khyber, one of the top local government officials in the semi-autonomous region.
Many of those wounded are said to be in a critical condition.
One witness told the AFP news agency that he was entering Jamrud when he heard the explosion and saw a ball of fire.
“I rushed to the site and saw people engulfed by flames. There were pieces of human flesh and blood everywhere. I saw a little child who was injured and crying. I took this boy to hospital,” he said.
The BBC’s M Ilyas Khan in Islamabad says that several militant groups, including the Pakistani Taliban and local insurgent group Lashkar-e-Islam, have sanctuaries in the Khyber region.
Jamrud is also known for infighting between various militant factions.
The army has carried out several offensives in Pakistan’s tribal areas, including Khyber, in the past.