Jerome Porical kicked the winning penalty seven minutes from time after the Racing pack were driven back into their own half.
Fullback Porical kicked three penalties and converted Paul Williams's try at the end of the first half.
Racing had been ahead thanks to an all-action performance by Jonathan Wisniewski, who scored a try, converted it and kicked two penalties.
But Porical’s 69th-minute penalty let Stade back into it, with his late kick completing the turnaround.
The result puts Stade eighth, seven points shy of Perpignan in seventh and 15 behind fifth-placed Racing.