Zimbabwe, who lost the first Test in Dhaka by three wickets, folded for 151 in their second innings at Khulna as they chased 314 for victory.
Former captain Shakib, who took 5-80 in the first innings, underlined his status as Bangladesh's best cricketer by taking five wickets for 44 in the second.
He followed England all-rounder Ian Botham and Pakistan's Imran Khan in completing a hundred and a haul of 10 wickets in the same Test.
The left-hander, who scored 137 in the first innings to set up Bangladesh's first innings total of 433, took out the dangerous Hamilton Masakadza (61) in the last session to spark a collapse as Zimbabwe lost their last five wickets for 15 runs.
Masakadza, who scored 158 in Zimbabwe's first innings, was the only visiting batsman to provide some resistance.
Shakib's fellow-left-arm spinner Taijul Islam, who took three wickets in the first innings, bagged three more in the second.
The third and final Test will be begin in Chittagong on Wednesday.
Scorecard
Bangladesh (1st innings): 433 (S. Al Hasan 137, T. Iqbal 109, M. Mahmudullah 56)
Zimbabwe (1st innings): 368 (H. Masakadza 158, R. Chakabva 101; S. Al Hasan 5-80)
Bangladesh (2nd innings): (Overnight: 201-5)
T. Iqbal c&b Panyangara 20
Sh. Rahman c Taylor b Waller 23
M. Haque c Chakabva b Waller 54
M. Mahmudullah c H. Masakadza b M'shangwe 71
S. Al Hasan lbw b Waller 6
M. Rahim c Chakabva b Waller 0
S. Hom c H. Masakadza b M'shangwe 50
T. Islam c Panyangara b M'shangwe 1
S. Hossain c H. Masakadza b M'shangwe 3
R. Hossain not out 8
Extras: (b-4 lb-4 nb-1 w-3) 12
Total: (for 9 wickets declared, 83.5 overs) 248
Fall of wickets: 1-28, 2-75, 3-131, 4-145, 5-145, 6-220, 7-222, 8-236, 9-248.
Did not bat: J. Hossain
Bowling: E. Chigumbura 6-2-13-0 (nb-1 w-1), T. Panyangara 12-3-45-1 (w-1), T. Chatara 7-3-19-0, M. Waller 27-4-59-4, S. Raza 6-0-22-0, N. M'shangwe 25.5-2-82-4 (w-1).
Zimbabwe (2nd innings): (Target: 314 runs)
S. Raza c M. Haque b Al Hasan 9
B. Chari c&b T. Islam 4
H. Masakadza c M. Haque b Al Hasan 61
B. Taylor c Hom b Al Hasan 0
R. Chakabva c Mahmudullah b J. Hossain 27
C. Ervine st Rahim b J. Hossain 21
E. Chigumbura c Mahmudullah b Al Hasan 12
M. Waller b T. Islam 4
T. Panyangara not out 8
N. M'shangwe c Rahim b Al Hasan 0
T. Chatara lbw b T. Islam 1
Extras: (b-4) 4
Total: (all out, 51.1 overs) 151
Fall of wickets: 1-11, 2-13, 3-15, 4-85, 5-117, 6-137, 7-142, 8-142, 9-142, 10-151
Bowling: T. Islam 15.1-3-44-3, S. Al Hasan 18-5-44-5, S. Hom 4-2-9-0, R. Hossain 4-2-8-0, J. Hossain 10-0-42-2.
Umpires: Aleem Dar and Billy Bowden
TV umpire: Sundaram Ravi
Match referee: Chris Broad
Result: Bangladesh won by 162 runs
Image: Sakhib Al Hassan
Photograph: Andrew Biraj/Reuters
Faulkner stars as Australia beat South Africa to level T20 series
PIX: The Shaukeens star Lisa Haydon visits Rediff offices
Review: Akshay Kumar is the real scene stealer of The Shaukeens!
Review: Rang Rasiya is an important film
Big opportunity for banks as online shopping booms