Goals from Joao Pedro and Luca Ceppitelli lifted the Sardinian side nine points above the relegation zone with 10 games remaining, and dealt a blow to Fiorentina’s declining hopes of European qualification.
Fiorentina, which hasn’t won in four league games, stayed in 10th place. It is seven points behind Torino in the final Europa League qualifying spot having played a game more.
After a first half of few chances, Brazilian midfielder Joao Pedro finished off a brilliant cross from Fabrizio Cacciatore to open the scoring in the 52nd minute.
Ceppitelli doubled the lead in the 66th with a header of Charalampos Lykogiannis’ free kick.
Joao Pedro should have sealed the result but his shot from a rebound struck the crossbar with the goal at his mercy.
Fiorentina forward Federico Chiesa pulled one back with two minutes of normal time remaining with a fine curling finish inside the far post.
Cagliari midfielder Luca Cigarini scored what would have been a contender for goal of the season from his own half but it was ruled out by referee Daniele Doveri as it should have been an indirect free kick.