Stade Français overcame the first-half sending off of Sergio Parisse to stun rivals Racing Métro 28-19 at the Stade Yves du Manoir.
The Italian skipper was red-carded midway through the first half, but Stade showed all their courage to pick up a deserved victory and all but secured a first Top 14 play-off spot in six seasons.
Jérémy Sinzelle scored their only try, while Morné Steyn kicked 20 points to help Stade complete the Paris Derby double over their city rivals.
Racing couldn't even manage a bonus point, and now sit precariously in sixth with two rounds of the Top 14 remaining, just three points clear of Montpellier and Bordeaux-Bègles.
Stade need one more point to be mathematically certain of reaching the knockouts, but now look well-placed to earn a home barrage.
They had the chance to open the scoring after just a minute when Casey Laulala was caught offside at a ruck, with Steyn on target from wide on the left.
Racing responded by going straight up the other end and a high tackle from Alexandre Flanquart offered Jonathan Sexton his first shot at goal. From the left the Irishman made no mistake, levelling matters at 3-3 after five minutes.
The first try almost went Racing's way after a great break by Alexandre Dumoulin from the restart, but Juan Imhoff was scragged as he tried to round Djibril Camara in the Stade 22.
While Racing looked the more dangerous, Stade were proving more clinical, with Steyn knocking over a second penalty, from inside his own half this time, after Antonie Claassen was slow to release the tackled player in a ruck.
The Stade lead didn't last long though, with Meyer Bosman penalised for a tackle off the ball, giving Sexton a simple shot from in front to make it 6-6.
However the game was transformed after 20 minutes when Parisse was given his marching orders in controversial circumstances. The Italian captain went up to contest a high ball with Brice Dulin, and after the French full-back jumped highest, the pair collided, with Dulin landing on his head. To rub salt into the wounds, Parisse had only mistimed his jump because he'd been held back by Racing flanker Bernard le Roux.
While referee Jérôme Garcès was correct in following the current laws of the game, it only served to show how flawed they are, with Parisse shown red for what was a fair contest between two players.
Racing took advantage of their extra man to take the lead for the first time, with Maxime Machenaud breaking through and while he was stopped, Stade then slowed the ball down, allowing Sexton to knock over his third penalty of the afternoon.
Stade showed some spirit and had their first real chance of the game, after two clean breaks from Bosman, Racing found themselves scrambling, and while Digby Ioane knocked on after beating two defenders in the home 22, the play came back for an intentional knock-on by Luc Ducalcon. Steyn made it 9-9, while the tighthead was given ten minutes in the bin.
With both sides down to 14, Stade moved back in front, shoving Racing off their own ball to earn a penalty from a scrum, with Steyn finding the target from 45 metres out on the left.
Racing should have moved level shortly before the break after Stade were penalised in a ruck following a good charge from Dimitri Szarzewski, but Sexton pulled his effort wide to the left.
And a minute later it was Stade who had the chance to extend their lead following another ruck infringement, Steyn showing Sexton how it's done with his fifth penalty of the half.
Racing had the final word of the half though, with Stade failing to release in a ruck, and Sexton finding his range once more to cut the deficit to three, Stade leading 15-12 at half-time.
Stade opened the half with an early penalty from Steyn to push the visitors' lead back to six points and it got even better a couple of minutes later as they scored the first try of the match.
After Waisea had split the Racing defensive line, the home side tried to slow the ball down at a ruck deep in their own 22. With the advantage, Julien Dupuy tried a little cross-kick and Sinzelle climbed higher than Imhoff and acrobatically touched down in the corner, with the TMO confirming he hadn't put a foot in touch. Steyn continued his perfect afternoon from the kicking tee, converting from the touchline to make it 25-12 to Stade.
Racing looked short of ideas, but they responded with a snipe from Machenaud, who was hauled down just short of the line. Stade's desperate defence looked to have held out, but Dupuy was sin-binned for an intentional knock-on, reducing Stade to 13.
With two extra men, Racing kicked to the corner, and despite hints of a knock-on in their rolling maul, they were able to work some space and Machenaud went over on the right. Sexton converted from the touchline to make it 25-19 with 25 minutes remaining.
Stade could have pushed the lead back to eight after Racing took out the jumper in a lineout, but Steyn was off-target for the first time of the afternoon, narrowly missing from the right.
Still, the visitors managed to see out the remainder of their period with 13 men, and after Steyn lacked the distance with another penalty attempt, he finally got his radar back to make it 28-19 with 13 minutes remaining.
That was it for the scoring, as Stade saw out the game to pick up four points and close the gap on the top three before next week's clash with Montpellier.
For Racing Métro:
Pens: Sexton 4
Yellow Card: Ducalcon
For Stade Français:
Pens: Steyn 6
Yellow Card: Dupuy
Red Card: Parisse
Racing Métro: 15 Brice Dulin, 14 Juan Imhoff, 13 Casey Laulala, 12 Alexandre Dumoulin, 11 Adrien Planté, 10 Jonathan Sexton, 9 Maxime Machenaud, 8 Antonie Claassen, 7 Bernard Le Roux, 6 Wenceslas Lauret, 5 Francois van der Merwe, 4 Juandre Kruger, 3 Luc Ducalcon, 2 Dimitri Szarzewski (c), 1 Eddy Ben Arous
Replacements: 16 Virgile Lacombe, 17 Julien Brugnaut, 18 Luke Charteris, 19 Camille Gerondeau, 20 Mike Phillips, 21 Benjamin Dambielle, 22 Henry Chavancy, 23 Brian Mujati
Stade Français: 15 Djibril Camara, 14 Jérémy Sinzelle, 13 Waisea Nayacalevu, 12 Meyer Bosman, 11 Digby Ioane, 10 Morné Steyn, 9 Julien Dupuy, 8 Sergio Parisse (c), 7 Raphaël Lakafia, 6 Antoine Burban, 5 Alexandre Flanquart, 4 Hugh Pyle, 3 Rabah Slimani, 2 Rémi Bonfils, 1 Heinke van der Merwe
Replacements: 16 Laurent Sempéré, 17 Zurabi Zhvania, 18 Gerhard Mostert, 19 Jono Ross, 20 Jérôme Fillol, 21 Jonathan Danty, 22 Julien Arias, 23 Davit Kubriashvili
Referee: Jérôme Garcès