There was little to separate the two players in the opening exchanges, but some strong returns from Federer saw him claim a break to move 5-3 ahead, before he served out the set.
Kohlschreiber improved during the second set but missed the opportunity to break in the fifth game, with Federer saving break point to level the scores at 3-3.
The German had a second opportunity to break in the seventh game at 40-30 ahead, but Federer fought back to level once more.
It was Federer who made the crucial break in the ninth game, before going on to serve out the set 6-4 and book his place in the next round.
The number five seed will face Argentina's Juan Martin del Potro in the last eight.