Pedro connected with a Fabrizio Cacciatore cross in the 52nd minute with Ceppitelli nodding in the second on 66 minutes as Cagliari claimed just their seventh win of the season and third in five games.
Federico Chiesa pulled one back on 88 minutes for his 12th goal this season in all competitions, hours after being called up for Italy's Euro 2020 qualifiers.
But for Fiorentina it was a missed chance to close to within four points of the Europa League places and they could finish the weekend ten points adrift of the final European berth depending on Torino and Atalanta's results.
Torino are sixth, level on points with Atalanta and host struggling Bologna, with the side from Bergamo at home against bottom club Chievo.
Fiorentina stay tenth while Cagliari are 13th, but now nine points off the relegation places.