The Swiss player began strongly, breaking Del Potro in the opening stages of the first set to establish a two-game lead. Federer gave little away off his own serve for the remainder of the set as he served it out 6-3.
The second set was an even contest with both players serving well. However it was Del Potro who made a decisive break in the final game of the set to claim it 6-4.
Federer improved during the deciding set as he forced his opponent into several unforced errors, which allowed him to break serve three times on his way to taking the set 6-3.
Federer will face Novak Djokovic in the semi-finals.