The Sicilians fell behind to Matias Vecino's 53rd-minute strike, but were unlucky not to take all three points once Gonzalo Bergessio headed in a Francesco Lodi free-kick soon after.
Catania built up a head of steam as Danilo Avelar was red-carded on 73 minutes, but Alexis Rolin's header against the crossbar was as close as they came to a win that would have lifted them out of the bottom three.
Cagliari created the majority of the chances in a goalless first half.
Marco Sau beat the offside trap after four minutes, with Catania goalkeeper Mariano Andujar making the save.
Davide Astori headed a Daniele Conti free-kick over and while the Sardinians started well, they were lucky not to go one down after 26 minutes when Lodi missed with his head from close range.
The on-loan Genoa midfiedler, back at Catania for a second spell, ran onto Gino Peruzzi's right-wing cross and should have scored.
Lodi would end up playing a vital role from the set-piece, and served notice shortly after as he fizzed a free-kick that Vlada Avramov clawed out of the top-right corner.
Cagliari ended the half strongest as Sau's shot on the turn was inches wide before Vecino saw a shot blocked close to the line by Nicolas Spolli.
Avramov had to make one last save before the whistle after a goalmouth scramble that saw him deny Pablo Barrientos after Sergio Keko's effort was blocked by Davide Astori.
Cagliari took the lead eight minutes after half-time when Sau passed for Vecino to score after a quick turn and shot.
Catania took 10 minutes to hit back, with Lodi's wicked free-kick touched in by Bergessio to signal the start of the hosts' dominance.
Avramov punched away a Gino Peruzzi cross-shot before Avelar was given his second caution for pulling at Sebastian Leto's shirt.
Catania pushed on and Leto shot wide of the left post before Rolin had the best chance, heading against the frame of the goal, after another pin-point Lodi free-kick.