The result takes PSG back to the top of the table and maintains their unbeaten start to the season under new coach Christophe Galtier.
Despite the result, this was PSG's least convincing performance of the season so far, coming against a Brest side who just two weeks ago lost 7-0 at home to Montpellier.
Galtier may reflect that he should have made more changes to his starting line-up, with this match coming in between their 2-1 midweek Champions League win over Juventus and a long trip to Israel to play Maccabi Haifa this Wednesday.
Nuno Mendes and captain Marquinhos were the only PSG players who started against Juventus to be rested, with Juan Bernat and Danilo Pereira coming in.
Galtier resisted the temptation to rest any of his superstar front three, telling broadcaster Amazon Prime that he had thought about leaving out Lionel Messi but realised that the Argentine "doesn't need a breather".
Summer signings Nordi Mukiele and Carlos Soler therefore spent the afternoon on the bench, while Spanish international Fabian Ruiz came on for his debut as a second-half substitute.
There was a lucky escape for Brest in the first half as defender Christophe Herelle was sent off for bringing down Neymar as the Brazilian advanced on goal.
VAR confirmed that Neymar was fractionally offside when Messi played the pass, and Herelle was allowed to stay on the field.
However, the home side scored on the half-hour with Messi again picking out Neymar, who controlled before sending a shot across goalkeeper Marco Bizot and into the far corner.
It was his eighth goal in seven league games this season. He also scored twice in the campaign-opening Champions Trophy against Nantes.
It was also a seventh assist for Messi, who has turned into a more reliable maker of goals than scorer since leaving Barcelona.
The Argentine did hit the post from a Kylian Mbappe assist early in the second half, while the latter had a goal disallowed for offside just before the break.
Ultimately PSG were grateful to Donnarumma. The Italian dived to his left 20 minutes from time to keep out Islam Slimani's penalty, awarded following a clumsy foul by Presnel Kimpembe on Noah Fadiga.