Wildcard Tsonga required two hours and 45 minutes and four match points to wrap up a 6-7 (6) 7-6 (4) 6-4 success against the sixth seed in Montpellier.
The 33-year-old, ranked 210th in the world, progressed to a last-four meeting with Moldovan Radu Albot, who earlier beat Marcos Baghdatis 6-2 7-6 (2).
Another Frenchman, Pierre-Hugues Herbert, upset third seed Denis Shapovalov 7-5 7-6 (4) in the other half of the draw.
Herbert will next face Tomas Berdych, winner of the tournament in 2012, after the Czech player overcame Serbian Filip Krajinovic 7-6 (3) 6-7 (5) 7-5.
In Bulgaria, second seed Stefanos Tsitsipas was knocked out of the Sofia Open following a straight sets defeat to Gael Monfils.
The 20-year-old Greek, a semi-finalist at last month’s Australian Open, was beaten 6-3 7-6 (5) by the Frenchman at the quarter-final stage of the tournament.
Russian Daniil Medvedev awaits Monfils in the last four after he beat Martin Klizan 6-4 6-1 in an hour and 10 minutes.
In the top half of the draw, Matteo Berrettini came from a set down to defeat Fernando Verdasco and set up a semi-final with Marton Fucsovics.
Italian Berrettini progressed 4-6 7-5 6-4 against sixth seed Verdasco, while Fucsovics received a walkover after fourth seed Roberto Bautista Agut withdrew due to illness.
At the Cordoba Open in Argentina, eighth seed Guido Pella upset Diego Schwartzman, overcoming the third seed 7-5 6-2 in front of their home crowds.
The world number 59 reached the semi-final in another straight-sets performance and is now the highest-ranked player remaining in the tournament.
Elsewhere, Federico Delbonis, of Argentina, held off Spaniard Jaume Munar 7-5 6-4 to set up a semi-final against compatriot Juan Ignacio Londero, who overpowered qualifier Pedro Cachin 6-4 7-6 (3).
Aljaz Bedene and Pablo Cuevas’ match will resume on Saturday after being suspended due to bad weather, with Bedene leading 3-1 in the first set.