Monaco had cut the gap to two points with a 3-2 win over Stade de Reims on Friday but a swivelling Ezequiel Lavezzi goal among Ibrahimovic's three ensured Laurent Blanc's side earned all three points from their trip south.
Ibrahimovic put the champions in front from the penalty spot in the 32nd minute after Serbian defender Uros Spajic had brought down Argentine forward Lavezzi in the area.
But the Parisians were shocked just before halftime when an Etienne Didot cross found Toulouse's Wissam Ben Yedder and the striker thumped a volley into the top of the net.
Lavezzi restored PSG's lead from an Ibrahimovic pass 11 minutes into the second half, taking the ball with his back to goal and spinning before whipping it home.
Ibrahimovic got his second, flicking on a Yohan Cabaye free kick in the 69th minute to make it 3-1.
The home side's heads dropped but they still looked dangerous on the break and Ben Yedder added his second in the 72nd to rattle the visitors.
In the frenetic final minutes, Guinean defender Issiaga Sylla raised his arms to defend a free kick, however, and the referee pointed to the spot.
Ibrahimovic tried to chip the penalty and Toulouse keeper Zacharie Boucher parried it away but the Swedish striker scored from the rebound.