Nice's forward Mario Balotelli shoots a penalty kick to score a goal against Bordeaux on April 2, 2017Nice's forward Mario Balotelli shoots a penalty kick to score a goal against Bordeaux on April 2, 2017 (AFP Photo/VALERY HACHE)
Gaetan Laborde struck with just nine minutes gone to give Bordeaux the lead in Nice, but Balotelli quickly levelled from the spot after a foul on Arnaud Souquet.
Valentin Eysseric rifled home the winner from the edge of the area on 27 minutes as Nice kept alive their outside title hopes after back-to-back draws had stalled their challenge.
Nice are third in the table on 67 points but have played a game more than both Monaco and reigning champions Paris Saint-Germain, who thrashed Leonardo Jardim's side 4-1 in Saturday's League Cup final.
Serious knee injuries to Alassane Plea and then Wylan Cyprien have robbed Nice of two key players, but Lucien Favre's men are all but assured of qualifying for next season's Champions League.
Nice haven't lost at the Allianz Riviera since February 2016, but that record looked under threat when Laborde seized on a defensive lapse from Dante and slotted through the legs of goalkeeper Yoan Cardinale.
The hosts replied just seven minutes later though, with Balotelli notching his 11th goal of the season -- all of which have come at home -- after Jeremy Toulalan was adjudged to have impeded Souquet.
And Nice led before the half hour as Balotelli found Eysseric with his back to goal just outside the box, the midfielder taking a touch before smacking beyond the outstretched dive of Cedric Carrasso.
Maxime Le Marchand's sliced clearance forced Cardinale to tip over as Bordeaux again pressed forward, and the Nice keeper then produced a stunning save to deny Valentin Vada from point-blank range.
Francois Kamano spurned a pair of excellent chances to equalise in the second half, first ballooning over from just two yards out and then hastily lashing wide after Le Marchand miscontrolled.
Ricardo Pereira could have sealed the points for Nice just past the hour as Carrasso struggled to cope with Balotelli's searing drive, but the Portuguese fluffed the follow-up with the goal gaping.
- Lyon frustrated -
Earlier, Firmin Mubele struck a fine late equaliser as Rennes held Lyon to a 1-1 draw despite playing 85 minutes with 10 men.
Ramy Bensebaini was sent off with just five minutes played at Roazhon Park after handling Sergi Darder's goal-bound shot.
Rennes goalkeeper Benoit Costil diverted Alexandre Lacazette's penalty onto the post, although Lyon eventually opened the scoring through Maxwel Cornet on 52 minutes.
But substitute Mubele powered in from the edge of the area nine minutes from time, and Rennes nearly snatched all three points as Sanjin Prcic fired into the side netting after following up his initial strike.
"Taking everything into account, we should have picked up three points. So yes, this draw is like a defeat," groaned Lyon coach Bruno Genesio.
"It's a match that sums up our season well. With what we showed today, we don't deserve to be fighting for the top three."
Lyon remain fourth and a distant 16 points behind Nice in the final Champions League spot with just eight games left to play.
Benjamin Moukandjo netted his 10th goal of the season as Lorient won 1-0 at home to Caen to climb off the bottom, while Prejuce Nakoulma netted twice as Nantes defeated Angers 2-1.
Andy Delort's first-half strike earned Toulouse a 1-0 victory at Montpellier as the visitors were forced to wear an all-white uniform provided by their opponents to avoid a kit clash.