Roger Federer came back from a two-set deficit for the seventh time in his career and beat Juan Martin del Potro 3-6, 6-7 (4), 6-2, 6-0, 6-3 at the French Open on Tuesday to reach his record-tying 31st Grand Slam semifinal.