Subrayen also accounted for Ryan Burl as Zimbabwe slipped to 94/5 in the 16th over, with skipper Sikandar Raza also managing only 10 off 17 deliveries before he was well caught by Jordan Hermann off Eathan Bosch, leaving the innings in need of a late lift.
That came from Tadiwanashe Marumani, who crashed 30 off just 13 balls with three sixes to give the total some respectability. He shared a rapid 43-run stand for the sixth wicket with Wessly Madhevere before both fell in the space of two balls towards the end.
Duan Jansen was the pick of the South African bowlers with 3/45, while Subrayen (2/27), Bosch (1/20), Kwena Maphaka (1/24) and Fortuin (1/25) shared the rest as Zimbabwe closed on 144/8.
