Home favourite Jo-Wilfried Tsonga continued his good form in Metz by battling back to defeat German Tobias Kamke and reach the semi-finals.