The striker opened and finished the scoring with Ezequiel Lavezzi bagging PSG's other goal, and Wissam Ben Yedder's strikes keeping the visitors close.
The Swede took his Ligue 1 tally to 22 for the campaign, but the scoreline somewhat flattered Laurent Blanc's men, who were far from their best at Stadium Municipal.
Ibrahimovic reached the 20-goal mark from the penalty spot when Ezequiel Lavezzi was fouled by Uros Spajic in the area, but a well-controlled volley from Wissam Ben Yedder saw the sides reach halftime level.
Lavezzi kept his cool after a flowing move to put PSG back ahead after 56 minutes, before Ibrahimovic flicked home Yohan Cabaye's free kick to make it 3-1. Ben Yedder ensured a nervy ending with his second 18 minutes from time, but Ibrahimovic bagged his third with a rebound from his own penalty in the closing stages.
The win sees PSG re-establish a five-point gap over second-place Monaco, while Toulouse stays 10th.
PSG struggled to create opportunities against an organized Toulouse side in the opening exchanges, and Blanc's men were handed a huge reprieve 26 minutes in.
Jean-Daniel Akpa Apro's cross was deflected to the back post where Serge Aurier crashed an effort against the upright — the ball rebounded to Martin Braithwaite inside the 6-yard box but he made weak contact, allowing Salvatore Sirigu to collect. Having survived that scare, Marco Verratti could have scored for PSG but he put a free header over the crossbar.
However, Toulouse's resistance was broken after 31 minutes. Spajic felled Lavezzi in the penalty area with a rash challenge, and Ibrahimovic converted from the spot.
That goal appeared to settle PSG and Blaise Matuidi burst into the box six minutes later, but his left-footed shot was kept out by a combination of goalkeeper Zacharie Boucher and the post.
Captain Thiago Silva then missed a key chance shortly before the break, slicing wide at the back post after Ibrahimovic flashed a ball across goal. And PSG was punished for its profligacy on the stroke of halftime when Ben Yedder volleyed home emphatically from Etienne Didot's cross.
The visitors regained the lead 11 minutes after the break. Ibrahimovic surged forward and his pass was flicked into the path of Lavezzi by Matuidi, and the Uruguayan swivelled before firing past Boucher into the bottom right-hand corner.
PSG was grateful to Sirigu for keeping the score level shortly after the hour mark, the goalkeeper producing a fine reaction stop from Aurier's point-blank header.
Cabaye was introduced from the bench to replace Verratti, and he made an instant impact with a whipped free kick that Ibrahimovic flicked home in the 68th minute.
The lead cut to four minutes later, however, Ben Yedder capitalizing with a cool finish in the box when Thiago Motta's interception fell into his path.
There was time for one last twist when Issiaga Sylla handled Ibrahimovic's free kick in the area, and the striker saw his initial chipped penalty parried by Boucher but tapped in the rebound.