The PSG substitute headed home Angel Di Maria’s cross in the 95th minute to cap a frantic last 12 minutes in which all five goals were scored.
Kylian Mbappe’s quickfire double had overturned Denis Bouanga’s opener but Romain Hamouma looked to have denied the hosts a win.
The result leaves PSG one point behind leaders Lille with five games to go.
Bouanga’s neat 77th-minute finish finally jolted a slumbering PSG side into life.
Mbappe’s response was instant, killing a long ball with one touch and burying a low shot into the Saint-Etienne net.
He was then dragged down by visiting keeper Etienne Green and dispatched the penalty confidently.
Hamouma’s 92nd-minute equaliser piled more pressure on Mauricio Pochettino’s side but Icardi headed in to rescue a much-needed victory.
PSG’s domestic inconsistency has blighted them all year but this win keeps them firmly in the title race.