The double Wimbledon champion had looked set to cruise into the final after dominating the first set, but Starace fought back to win the second before Federer closed out a 6-3, 3-6, 6-3 win.
The semi-final victory for Federer took him to the landmark of 50 match wins for the season.
The Swiss becomes the fastest man to reach 50 wins in one season since former world number one Ivan Lendl in 1989.
Federer will meet either German Rainer Schuettler or Russian Igor Andreev in Sunday's final.