Allrounder Mohammad Nabi (52) scored his maiden half-century to propel Afghanistan to 186-6, then legspinner Rashid Khan (3-11) choked Zimbabwe to 127 all out with two balls to spare.
Afghanistan, which defeated Scotland and Hong Kong in previous Group B matches, will join England, West Indies, South Africa, and Sri Lanka in Group 1 of the Super 10 next week.
"This match was very important for Afghanistan, the people love cricket back home," captain Asghar Stanikzai said. "We played a few poor shots, but Sami and Nabi played very well."
Afghanistan was 4-63 having lost four wickets in 19 balls, when Samiullah Shenwari added 43 off 37 balls and put on a match-winning 98 runs with Nabi off 64 balls.
Nabi hit four boundaries, two sixes, and cut loose late as Afghanistan added 77 runs in the last five overs against some wayward Zimbabwe bowling.
"I am very happy with my performance because it's a very tough game for us to qualify for the next stage," Nabi said.
Hard-hitting opening batsman Mohammad Shahzad (40) hit seven fours and a six, providing Aghanistan a whirlwind start of 49 runs off 29 balls.
But after Shahzad was caught at point while attempting an extravagant reverse sweep off left-arm spinner Sean Williams, medium-pacer Tinashe Panyangara took 3-14
Nabi and Shenwari then featured in Afghanistan's second best Twenty20 stand as Zimbabwe struggled to stem the flow of runs in the last five overs. Nabi whacked spinner Wellington Masakadza for two sixes and a four in the 16th over while Shenwari hit Panyangara for two boundaries and a six in the 18th.
Zimbabwe, which lost its previous four T20s against Afghanistan, lost wickets at regular intervals and half of the side was dismissed for 63 runs by the 12th over, with Khan claiming Vusi Sibanda and Sean Williams, who both scored 13 each.
No. 10 batsman Panyangara top-scored with an unbeaten 17.
"They played a lot better than us," Zimbabwe captain Hamilton Masakadza said. "From the moment they hit us out in the powerplay, we were struggling. Nothing went according to the plan."
WT20: Afghanistan beats Zimbabwe, qualifies for Super 10