Up two sets and 4-3 overnight, the Swiss defending champion made a hesitant start but saw off the Frenchman 8-6 in the tiebreak to set up a meeting with either American second seed Andy Roddick or unseeded Croatian Mario Ancic.
Grosjean looked second best to Federer before rain interrupted the Swiss on Friday but, after saving two match points at 4-5, surprised the champion by breaking for 6-5.
Federer immediately broke back and was 4-0 down in the tiebreak before recovering to seal victory with a sumptuous smash.
"I'm very pleased. It's difficult to stop at such a moment in the game," Federer said of the rain break. "I'm very relieved because things were looking good but you never know what can happen if he turns it around.
"It's a new day, new conditions, so I am very pleased to have won this third set.
"I had to really fight hard first of all to actually get to the tiebreaker. I had two match points before the tiebreaker, didn't make them and suddenly he was serving for the set.
"Then I had to come back in the tiebreaker."
It was Marseille-born Grosjean's fourth defeat in four grand slam semi-finals. The 26-year-old also lost in last year's Wimbledon semis, to Australian Mark Philippoussis.
Federer's victory took one hour 59 minutes in total, meaning he has been on court for only 10 hours and two minutes in winning his six matches to reach the final, dropping only one set -- a tiebreak loss to Lleyton Hewitt in the quarter-finals.
"I was hoping he wouldn't race away with the lead like Lleyton did in his tiebreak against me. Luckily for me I could turn it around," Federer added.
It was his 23rd successive victory on grass following his wins here and at the pre-Wimbledon Halle tournament over the last two years.