Rodrigo Palacio gave the hosts a lead after 10 minutes but despite looking good value to extend their lead, each big chance went to waste and Marco Sau levelled just before the break.
And when further chances for Inter, including a two-yard open goal miss by Diego Milito, came and went, Sau struck again after superb work by Mauricio Pinilla to turn the score around.
But Inter sub Ricardo Alvarez gave the flustered home team a second wind, and his cross eight minutes from time was turned in for an own goal by Davide Astori.
But the hosts were furious after having a stoppage-time penalty appeal turned down and had coach Andrea Stramaccioni sent off for dissent.
The club declared a media silence, apart from president Massimo Moratti who gave an angry television interview to the Mediaset Premium television channel from his car as he left San Siro.
"I can say that for three games in a row, we have had to deal with refereeing injustices, which have prevented us from getting the result," he said.
Inter are second, four points behind leader Juventus who drew 0-0 at home to Lazio on Saturday.
Cagliari are now 11th, six points outside the relegation zone.