Floyd Ayite and Mads Albaek struck within three minutes of each other to give Reims a two-goal first-half lead at the Stade Velodrome.
Elie Baup's Marseille came back into the game in the second half, Florian Thauvin pulling one back before Andre-Pierre Gignac levelled with four minutes to play.
However, Oniangue took advantage of some slack defending to head home the winning goal in stoppage time and secure three points for Reims.
Rennes ended Toulouse's two-match winning run with a comprehensive 5-0 victory.
Romain Alessandrini, Tiemoue Bakayoko and Foued Kadir gave Rennes the perfect start with first-half strikes.
Toulouse attempted to get back into the game but were unable to give their fans anything to cheer about, and things got worse as Nelson Oliveira struck twice to complete the rout.
Sebastien Squillaci netted the only goal for Bastia as they beat Nice 1-0 in Corsica.
The hosts' Gianni Bruno was dismissed after the interval and Mahamane Traore of Nice followed when he picked up a second yellow card in the closing stages.
Ajaccio fell to a sixth defeat of the season – their third in a row – as they were beaten 2-1 by Guingamp.
Late goals from Claudio Beauvue and Mustapha Diallo saw Guingamp come from a goal down to pick up their fifth win of the season and push Ajaccio into the bottom three.
They replace Lorient, who climbed up to 17th place with a 2-1 victory over Sochaux.
Lorient had previously lost their last four league fixtures but turned their fortunes around to leave new Sochaux coach Herve Renard still searching for his first win.
Elsewhere, Evian inflicted more misery on bottom of the table Valenciennes as Modou Sougou's 82nd-minute strike ensured a 1-0 win for the visitors to Stade du Hainaut.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.