Pakistan swept to a 3-1 series win after reaching 239 for three in 46.5 overs in reply to the tourists' score of 238 for seven.
Opener Hafeez smashed 92 from 111 balls with five fours and two sixes. Shoaib Malik remained unbeaten on 34 and Abdul Razzaq seven.
Shivnarine Chanderpaul had led the West Indian innings by scoring his fourth hundred in 205 one-day internationals, while skipper Brian Lara (44) crossed the 10,000-run mark in one-dayers.
Although Lara became the fifth batsman - after Sachin Tendulkar, Sourav Ganguly, Sanath Jayasuriya and Inzamam-ul-Haq - to reach the milestone when he made 25 runs in his 287th game, he could not prevent Pakistan's victory charge.
Pace bowler Rana Naved, named man of the series for his total haul of 11 wickets, restricted the tourists on the flat track by claiming 4-43.
West Indies were hoping to carry on the momentum after winning the last match in Multan but were foiled when wicketkeeper Akmal exploited the powerplay overs effectively.
Hafeez and Akmal put Pakistan in control with an 87-run first-wicket partnership in 17 overs.
Akmal belted nine fours and one huge straight six off Daren Powell before being caught at deep mid-wicket by substitute Jerome Taylor off Corey Collymore.
Hafeez then paired up with Yasir Hameed (41) to add 89 from 117 balls to frustrate the tourists further.
Hameed was caught at long on by Runako Morton off Chris Gayle after his 69-ball knock.
Hafeez was trapped leg before by Dave Mohammed with Pakistan 15 runs short of victory.
Earlier, opener Chanderpaul made 101 from 142 balls with eight fours before being dismissed in the 48th over.
It was Chanderpaul's first one-day hundred since 2002 when he made 108 against New Zealand at Gros Islet.
He shared partnerships of 51 with Marlon Samuels (22) and 96 with Lara after Gayle (7) once again fell to Naved.
Naved also came back for a damaging final spell in the last 10 overs to claim the scalps of Lara and Chanderpaul, who was caught by Hameed at deep mid-wicket.
Naved's fourth victim was Dwayne Smith, trapped leg before for one as the tourists lost four wickets for 22 runs.
West Indies 238 for 7 in 50 overs (Chanderpaul 101, Lara 44; Naved Rana 4 for 43, Abdul Rehman 2 for 39) lost to Pakistan 239 for 3 in 46.5 overs (Hafeez 92, Akmal 56, Yasir Hameed 41, Shoaib Malik 34 n o; Collymore 1 for 44, Gayle 1 for 41)