The world No2 and reigning Wimbledon champion set up victory by going on a five-game winning streak from 5-5 in the opening set, before eventually prevailing 7-5, 6-3.
Federer has gone 28 matches undefeated at the grass-court tournament in northern Germany, winning the event in 2003, 2004, 2005, 2006 and 2008. He did not play in 2007 or 2009.
The Swiss recognised the mid-match surge had been all-important against Kohlschreiber, the man he beat in the 2008 final. "Ten strong minutes led to today's success," said Federer. "It was a bit of a bumpy start, but then I found my rhythm."
Federer will take on another home hope, Philipp Petzschner, in the semi-finals, after he beat Slovakia's Lukas Lacko 6-4, 6-3.
The other last-four clash also features a German, with Benjamin Becker taking on Lleyton Hewitt. The Australian reached his first semi-final of the season thanks to a 7-6 (7/0), 6-1 win over Andreas Beck, while Becker defeated his compatriot Mischa Zverev 7-6 (7/4), 6-0.