The win also marked the first series victory by an associate country against a full member team in ODIs. Zimbabwe won the toss and opted to field first.
Mohammad Shahzad (26) looked to continue his form from the previous game, but Wellington Masakadza (3-31) ended his 22-ball knock with Shahzad finding the mid-wicket fielder.
A 97-run stand between Mohammad Nabi (53) and Noor Ali Zadran (54) steadied the innings as Afghanistan reached the 100-run mark in the 23rd over.
Noor Ali reached his half-century in 85 deliveries while Nabi brought his in 65 balls.
Sikandar Raza (3-40) provided relief to Zimbabwe when he dismissed both the set batsmen in quick succession.
Noor Ali was castled by a quicker one while Nabi managed to find the point fielder to leave Afghanistan at 160 for three.
Asghar Stanikzai (38) tried to steady the innings but wickets were tumbling at the other end as Samiullah Shenwari (1), Najibullah Zadran (5), Shafiqullah (6) and Rashid Khan (4) failed to reach double figures.
With cameos from Mirwais Ashraf (21) and Dawlat (13), Afghanistan managed to reach 245 for nine in the 50 overs.
Raza and Masakadza were the pick of the Afghanistan bowlers having accounted for three wickets each.
The Zimbabwe chase was rocketed early by the Afghanistan pacers as they lost the first five wickets for 51.
Williams (102) stitched a 52-run stand with Elton Chigumbura (14) which was the highest in the innings. With wickets falling at one end, Williams decided to up the ante smoking four sixes and two fours to reach his half-century.
Khan (2-24) ended Chigumbura’s 36-ball vigil to further dampen Zimbabwe’s chances. Williams looked like he was batting on a different track and with support from Luke Jongwe (16) he cruised to 99 from 119 deliveries.
But that’s when Dawlat (4-22) returned back to castle Jongwe when he attempted a ramp shot on the leg side adding to the nerves of Williams as Zimbabwe reached 166 for eight.
However, Williams finally managed to break his shackles of nineties in the 43rd over with a single of Nabi (0-33).
Dawlat picked his fourth wicket dismissing Masakadza (3) while Williams was the last wicket to fall stumped off Khan after a splendid 102 in an innings where the second highest score was 16.
Zimbabwe were dismissed for 172 falling short of the Afghanistan total by 73 runs, thereby conceding the series to Stanikzai’s men 3-2.
Williams and Dawlat shared the man of the match award while Nabi was announced the man of the series.
The action now shifts to the two-match Twenty20 International series which gets underway at the Queens Sports Club in Bulawayo on 26th October.