Bordeaux came from behind at the Stade de l'Aube to take their place in the Coupe de France final against Evian.
Jean-Christophe Bahebeck gave Troyes an early lead but Cheikh Diabate equalised and Jeremie Brechet's second-half own goal proved decisive.
The semi-final clash had been postponed last Tuesday due to the risk of flooding but Troyes were roared on by a passionate home crowd when it did finally get under way.
And they raised the volume another notch in the seventh minute when Fabrice N'Sakala's long pass was miscontrolled by defender Lamine Sane and Bahebeck made no mistake when one-on-one with keeper Cedric Carrasso.
Diabate headed just over from Benoit Tremoulinas' deep cross and Carrasso kept out a superb Bahebeck effort at the other end before Bordeaux equalised in the 41st minute.
Mariano crossed from the right and Diabate met the ball in the six-yard box to score his 14th goal of the season.
Florian Jarjat denied him a second after the break and Troyes' Maxime Colin curled a superb effort just over.
But Bordeaux took the lead in the 63rd minute when Brechet, in preventing the dangerous Diabate from getting a shot away, could only send the ball into his own goal.
Carrasso made a brilliant save from Marcos Dos Santos to deny ESTAC an equaliser and Francis Gillot's Bordeaux side secured a place in May 31's final.