Federer, No. 2 in the world and a two-time defending champion of the event, got by David Ferrer 6-4, 7-6 (7-5). Federer is 14-0 against Ferrer, the world's No. 5-ranked player.
Del Potro, the No. 6 seed, used a strong start in a 6-0, 6-4 win over eighth-seeded Janko Tipsarevic.
Federer's win left him 2-0 in Group B play and combined with the straight-set win over Tipsarevic Tuesday to lock up a spot in the semis. Ferrer and del Potro are both 1-1 and Tipsarevic is 0-2 in the group. Federer has to play del Potro and Ferrer goes against Tipsarevic in the final round-robin matches.
Ferrer opened strong, winning the match's first three points off Federer's serve, but Federer rallied to win the game. The three break-point saves were indicative of the match as Federer fought off 9-of-10 of Ferrer's break chances.
Federer had his first break in the second game but Ferrer evened things up midway through the set. However, Federer broke at love to take the set.
Neither player managed a break in the second set but Federer won five of six points in one stretch for a 6-3 lead in the tiebreaker.
Del Potro took 70 percent of the points in the first set. Tipsarevic got on the board by winning the first game of the second set, a game that took 12 points. But del Potro posted his fourth break of the day in the fifth game and lost only three points on serve the rest of the way.
No. 1-ranked Novak Djokovic, 2-0 in Group A, wraps up his round-robin Friday against fifth-seeded Tomas Berdych while world No. 3 Andy Murray plays No. 7-seed Jo-Wilfried Tsonga. Berdych and Murray are 1-1 and Tsonga, a finalist in the Finals last year, is 0-2.
Exploding whale video goes viral on Internet
Couple mistakenly served bag of cash at McDonald's drive-thru