Federer, seeded No. 1, came from behind for a 3-6, 6-3, 6-2 victory over Daniel Brands. Federer, who lost one of two break points for Brands in the first set, lost only 10 points on serve over the second and third sets.
After losing the first set, Federer lost only 14 points -- two serving -- in the second.
Haas, last year's tournament runner-up, was a 6-1, 4-6, 6-4 winner over Blaz Kavcic. He had a total of five breaks, with two coming in the third set.
Carlos Berlocq, who picked up his first ATP championship last week in Sweden, posted one of five second-round upset wins Wednesday. He took out 16th-seeded Martin Klizan 4-6, 6-1, 7-6 (8-6).
Also advancing with wins over seeded players were Marcel Granollers, who ousted sixth-seeded Andreas Seppi 6-2, 1-6, 6-1; Federico Delbonis, who beat 10th-seeded Tommy Robredo 6-1, 4-6, 6-4; Guillermo Garcia-Lopez, who got by No. 13 Mikhail Youzhny 6-3, 6-7 (3-7), 6-2; and Jan Hajek, who beat No. 15-seeded Ernests Gulbis 6-4, 2-6, 6-4 and earned a third-round match with Federer.
Also, fourth-seeded Jerzy Janowicz survived a third-set tiebreakers in beating Robin Haase 6-4, 3-6, 7-6 (7-4); fifth-seeded Juan Monaco eased past Gail Monfils 6-4, 6-4; 11th seeded Feliciano Lopez topped Jan-Lennard Struff 7-5, 6-3; No. 12 Fabio Fognini defeated Albert Ramos 6-1, 6-3; and No. 14 Fernando Verdasco edged past Roberto Bautista Agut 6-4, 3-6, 6-2.
The official name of the tournament is the best-at-home Open-German Tennis Championships.