A quiet first half saw the match goalless at the break.
The visitors took the lead in the 56th minute through a Mamadou Sakho own goal.
Things got worse for the Ligue 1 leaders 15 minutes later as Ballon d'Or nominee Ibrahimovic was dismissed for a high kick on the St-Etienne stopper.
Just two minutes later Pierre-Emerick Aubameyang doubled the advantage for St-Etienne.
Guillaume Hoarau gave PSG some late hope with a goal for the home side two minutes from time.
Despite almost 10 minutes of stoppage time, PSG were unable to find an equaliser.
The win takes St Etienne up to fourth, moving ahead of Lyon.