Centre back Souleymane Diawara and winger Andre Ayew scored either side of the break from neat passes by the controversial Barton as Marseille trimmed Olympique Lyon's lead at the top of the table to two points.
Marseille have 29 points from 15 games with leaders Lyon on 31 and third-placed St Etienne and Paris St Germain both on 26.
Charlison Benschop scored a first-half equaliser for Brest, who remained 14th on 17 points after losing to a side who were routed 4-1 by Lyon earlier in the week.
"We fought hard for this victory on a heavy pitch and against a very gallant opponent," Marseille coach Elie Baup told French channel beIN Sport. "We create chances in all our games, even away. But we have to be more efficient."
Marseille outclassed their hosts in the first half but wasted numerous chances before Diawara put them ahead in the 34th.
Morgan Amalfitano and Mathieu Valbuena could have made it 2-0 but goalkeeper Alexis Thebaux kept his side in the game.
Brest then seized their chance, Benschop equalising in the 42nd minute with a point-blank header after Marseille fullback Jeremy Morel had cleared off the line.
Englishman Barton, on loan from Premier League Queens Park Rangers, helped put Marseille deservedly back ahead in the 56th when he grabbed the ball in the midfield and found Ayew after a fine one-two with Valbuena.
Brest pushed hard for a late equaliser but goalkeeper Steve Mandanda parried away a long-range Benoit Lesoimier effort 13 minutes from time while Morel performed more stoppage-time heroics on the goal line.
Stade Rennes climbed to seventh on 25 points after they recovered from two goals down at halftime to clinch a 3-2 win at 19th-ranked Troyes thanks to Jonathan Pitroipa's late winner.
The winger ran in on goal and shot past goalkeeper Yohann Thuram-Ulien from a lightning counter-attack one minute from time, clinching the victory after Romain Alessandrini and Julien Feret had made it 2-2.
In Lorient, Benjamin Corgnet volleyed in a Jeremie Aliadiere cross on the stroke of halftime to give the hosts a 1-0 victory over Toulouse who slumped to a fourth defeat in the last five league games.
Lorient stayed 11th on 21 points, trailing eighth-placed Toulouse by one.