Attacks on people suspected of spying for US forces have escalated over recent months, with several beheadings reported in Pakistan's ethnic Pashtun tribal areas.
However, no group has yet claimed resposibility for the hotel blast.
Local television reports initially put the number of dead at 16, but the figure quickly rose to 24.
People eating lunch
Police initially said the victims of the blast were Pakistanis, but an intelligence official said the hotel was also popular with Afghans and that it had been crowded with people eating lunch.
Hospitals said two women and a 10-year-old boy were among the victims and that many of the wounded were in a critical condition.
Jan Baz, a doctor at the city's main Lady Reading Hospital, said: "The blast was so powerful that some of the bodies had their heads blown off."
Peshawar, the capital of North West Frontier Province, lies close to the border with Afghanistan and has seen periodic bomb attacks in recent years.
Sohail Rahman, reporting for Al Jazeera, said: "Peshawar is only 60km away from the Afghan border. In recent months we've seen an exodus of Afghan refugees from Pakistan being repatriated, some would say forcibly... There has been a bit of resentment as a result.
"On top of that, Peshawar has a mixed population and recently we've seen tension growing along the border area between Pakistan and Afghanistan."
A series of deadly blasts has hit Pakistan this year, including an attack not far from Peshawar on April 28 which killed 28 people and injured the country's interior minister.