Branco van den Boomen’s free-kick gave Toulouse a surprise lead at the Parc des Princes on Saturday, but the champions fought back without injured duo Kylian Mbappe and Neymar.
Hakimi equalised with a sublime first-half strike and he was credited with the assist for a brilliantly taken second goal from Messi after the break.
PSG were good value for a victory that increased their advantage over Marseille at the summit and they will take some stopping in their quest to retain the title.
PSG suffered an early blow when Renato Sanches was seemingly in tears as he departed with an injury and they were rocked again when Van den Boomen sent a free-kick to the left of the wall and into the far corner 20 minutes in.
Marquinhos nodded Messi’s whipped corner against the post and PSG were relieved to see the offside flag go up after Zakaria Aboukhlal thought he had headed Toulouse into a two-goal lead.
Hakimi produced the moment of quality the leaders had been lacking to level seven minutes before the break, cutting in from the right and unleashing a venomous left-foot drive that found the back of the net from 20 yards out.
The marauding Hakimi was involved in PSG’s second goal just before the hour-mark, embarking on a run that that resulted in Messi firing a clinical left-foot finish beyond Maxime Dupe from outside the box.
PSG did not see the game out in convincing fashion and Mikkel Desler spurned a great chance to make it 2-2, before Messi rattled the post in a frantic finale.
PSG player ratings (4-3-1-2)
GK: Gianluigi Donnarumma – 5/10 – Poor positioning for the opening goal. You expect better from someone of his calibre.
RB: Achraf Hakimi – 9/10 – A scorcher of a goal in yet another impressive performance from Hakimi, who also set up Messi’s excellent strike.
CB: Marquinhos – 6/10 – Solid enough at the back under more pressure than he’d have expected. May or may not have hit the post from Messi’s corner.
CB: Danilo Pereira – 6/10 – Moved into midfield after Sanches’ early injury and did a nice job of adding some real muscle to the heart of the pitch.
LB: Nuno Mendes – 3/10 – Felt like he had more fouls than passes. Could have easily had four or five yellow cards. No idea how he avoided a red.
CM: Renato Sanches – 5/10 – Pulled up with a hamstring injury after only ten minutes and could not continue.
CM: Fabian Ruiz – 5/10 – Looked a bit uncomfortable. Didn’t seem to know what to do up against a resolute defence.
CM: Carlos Soler – 3/10 – Failed to link midfield and attack. Poor movement and decision-making which really hampered his team.
AM: Vitinha – 4/10 – Didn’t offer nearly enough creativity. Guilty of dribbling when he should have been passing.
ST: Hugo Ekitike – 5/10 – You could have easily missed Ekitike in the first half, but his movement stepped up after the break.
ST: Lionel Messi – 8/10 – Played more in midfield than most of the actual midfielders did. Really tried to drag his side to a good result and it was his glorious goal which inspired the win.
El Chadaille Bitshiabu (14′ for Sanches) – 5/10
Juan Bernat (76′ for Mendes) – 6/10
Warren Zaire-Emery (76′ for Soler) – 6/10
Ismael Gharbi (89′ for Ekitike) – N/A
Christophe Galtier – 6/10 – Hands were somewhat tied with the absences of both Kylian Mbappe and Neymar. A very youthful bench but perhaps needed to show more faith as his seniors struggled. Hard to be too critical.