Chahal overcame a brief onslaught from Vusi Sibanda to trigger a dramatic Zimbabwe collapse, which saw the hosts lose five wickets for the addition of just six runs.
Sibanda's positive strokeplay had taken Zimbabwe to a promising 106 for three after they had lost the toss and been sent in to bat, but Chahal picked up the wickets of Sikandar Raza, Elton Chigumbura and Sibanda in the space of nine deliveries.
Zimbabwe's cause was not helped by the fact that Sean Williams was unable to bat.
After being named as a replacement for the injured Craig Ervine, Williams was hit on the finger whilst warming up and sent for an X-ray.
Chahal finished with figures of 3 for 25 from six overs, while seamers Barinder Sran and Dhawal Kulkarni picked up a couple of wickets apiece.
Sibanda's 53 was the top score for Zimbabwe.
India lead the three-match series 1-0 after winning the first ODI by nine wickets.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ