Cagliari remained one point above the relegation zone after an alarming run of just one win from their last eight league games, while Torino are 10th.
Torino led from midway through the first half. Zapata turned in a cross from Raoul Bellanova at the near post.
Ricci added a second in stoppage time with his first goal of the season. Goalkeeper Simone Scuffet could turn his shot only into the net after a piercing run from midfield.
Veteran midfielder Nicolas Viola pulled a goal back for the home side with 13 minutes remaining, but it was not enough to stop Torino, who had a late third goal chalked off for offside.