Goals by Alexandre Lacazette, his 16th of the season, and Bafetimbi Gomis gave the hosts a 2-0 lead and although Brazilian Xavier Thiago reduced the deficit before half-time, Lyon held on in a game played with half the ground empty.
Lyon, who won the trophy in 2001 and have lost three times in the final, initially made light of being without their two main creative players Yoann Gourcuff, who was injured, and the suspended Clement Grenier.
Lacazette, who had to fill the playmaking role, slotted home their opener in the 16th minute from defender Mehdi Zeffane while Gomis got in at the near post to convert Jimmy Briand's pass 11 minutes later.
Troyes, presently 11th in Ligue 2, got back into the game nine minutes from the break as Thiago profited from poor marking to score his first goal of the season.
It was no more than Troyes had deserved as they had gone close twice shortly before, Henri Bedimo blocking a goalbound effort and then Milan Bisevac taking the ball off the feet of Stephane Darbion as he squared up to shoot from close range.
Lyon too had their chances to extend their lead, Gomis firing a shot that went narrowly wide and Arnaud Mvuemba's free-kick being palmed away by Troyes goalkeeper Mathieu Dreyer.
Lyon faded in the second-half, with Briand's headed goal being ruled out for a marginal offside while Lacazette's shot was well saved by Dreyer five minutes from time.
Lyon, who slipped to their first defeat of the year last Sunday at Rennes, will need to be at full strength against PSG, who beat them 4-0 on 1 December in their Ligue 1 match.
The capital side had secured their place in the 19 April final on Tuesday with a 2-1 win over Nantes, Swedish star Zlatan Ibrahimovic scoring a double.