The German triumphed 6-3 6-4 just four days after Nadal won a record seventh French Open title at Roland Garros.
It was the first time Kohlschreiber had beaten the Spaniard after eight previous defeats, although this was their first meeting on grass.
Kohlschreiber will next take on Tommy Haas, after the veteran German produced a vintage display to beat Czech third seed Tomas Berdych 6-4 3-6 7-5.
Federer looked extremely sluggish as he lost the opening set on a tie-break, but roared back to take the second 6-4.
The Swiss then took the deciding set on a breaker, and will next face Mikhail Youzhny, who beat Radek Stepanek 6-4 4-6 6-4.