Lucas Pouille saw off a fightback from Philipp Kohlschreiber to progress to the semi-final in Stuttgart.