Sri Lanka were 77-0 at lunch with Tharanga on 53 and Dimuth Karunaratne on 23. The hosts still trail Zimbabwe by 279 runs.
Tharanga, who registered his seventh Test fifty, smashed seven fours and a six.
Earlier Sri Lanka spinner Rangana Herath claimed his fifth wicket as the visitors lasted just 4.4 overs of the morning session. Overnight centurion Craig Ervine was the last man out for 160.
Zimbabwe resumed on 344-8 with the Ervine and Donald Tiripano battling on.
Paceman Lahiru Kumara took the prized scalp of Ervine, whose second Test century lifted Zimbabwe from a precarious 70-4 on the opening day.
Ervine's 256-ball stay, laced with 13 fours and a six, included a crucial 84-run stand for the fifth wicket with Sikandar Raza (36).