Hafeez has scored three centuries in four one-day internationals in the ongoing series against Sri Lanka.
The 33-year-old was dropped from the Test side for the home series against South Africa in October.
Hafeez scored only 102 runs in his last 10 test innings against South Africa and Zimbabwe.
"Hafeez has been rewarded for his excellent form and could not be ignored," a national selector said.
Hafeez, who was set to join the Melbourne team for the Big Bash T20 Cup, will now have to drop his lucrative contract and a PCB source told PTI that the board had agreed in principle to compensate the allrounder.
More From This Section
Melbourne Renegades had announced that Hafeez would be joining them by January 1.
Fast bowler Mohammad Talha was also recalled after playing his only Test match against Sri Lanka in 2009 in Lahore, which ended abruptly after a militant attack on the visitors.
Pace spearhead Umar Gul was also included after he impressed in the ODI series against the Islanders.
Gul, who returned in the third one-dayer, played for Pakistan after an eight month layoff due to a knee surgery.
The first Test of the three match series begins December 31 at Abu Dhabi.
Squad: Misbah-ul-Haq (Capt), Younis Khan, Mohammad Hafeez, Khurrum Manzoor, Ahmed Shahzad, Shaan Masood, Azhar Ali, Asad Shafiq, Adnan Akmal, Junaid Khan, Rahat Ali, Umar Gul, Muhammad Talha, Saeed Ajmal and Abdul Rehman.