© Getty Images
Serge Aurier hit the post for the home side after 26 minutes. The rebound then fell to Martin Braithwaite, who couldn't find the finish, despite being right in front of goal.
Ezequiel Lavezzi then won a penalty after being brought down in the area by Uros Spajic just after the half-hour mark. Ibrahimovic stepped up and calmly rolled the ball down the centre of the goal to make it 1-0 to the away side.
A minute later, Ibrahimovic put Lucas in on goal, but the winger couldn't find the finish to give PSG a two-goal cushion before half time.
Ibrahimovic found Thiago Silva at the back post on 43 minutes, though the defender could only shin his effort wide.
Toulouse then grabbed a deserved equaliser through Wissam Ben Yedder, who volleyed home at the back post on 45 minutes.
Lavezzi put PSG back in front on 56 minutes, turning the defender and firing home into the bottom corner to make it 2-1.
Ibrahimovic made it 3-1 on 68 minutes, finishing well with a looping header from a Yohan Cabaye free kick.
Four minutes later, Toulouse shocked PSG by pulling a goal back through Ben Yedder, who tucked it home to score his second of the game.
PSG were awarded a second penalty on 88 minutes for a handball. Ibrahimovic stepped up, but saw his chipped effort saved before stabbing home the rebound to make it 4-2 and secure all three points.