The third-seeded Frenchman, who lost the first set, eventually grabbed the tie-break 12-10 to seal a 4-6 6-3 7-6 victory after two hours five minutes.
Tsonga, who had won his only previous encounter with the 46th-ranked Tomic, made the most of his opportunities to beat the 21-year-old Australian, one of the most exciting youngsters in tennis.
"I found the way to stay in this match and it's not just a miracle. He will tell you that I played well on these points," Tsonga said.
"In moments like these, you need to be brave to overcome your fear and I, personally, have to play more aggressive."
Tsonga will face Gilles Simon in the semi-final after his compatriot upset title holder Juan Martin Del Potro 6-4 6-3.
Simon did not drop his serve once and was in total control while the former US Open winner tried some ineffective sliced backhands.
After grabbing the first set in 36 minutes, the 14th-ranked Simon quickly led 4-1 in the second and managed to resist the second seed's late surge.
Top seed Tomas Berdych had to work harder to move past seventh-seeded Jerzy Janowicz, who made a name for himself when he reached the Paris Masters final in November after entering the main draw from the qualifiers.
Berdych will meet 119th-ranked Russian Dmitry Tursunov, a former top 20 player, who defeated Gilles Muller of Luxembourg 7-6 1-6 7-5.
Top seeded Spaniards David Ferrer and Nicolas Almagro remain on course to meet again in the final of ATP Buenos Aires after the pair won through their quarter-finals.
World number four Ferrer wasted no time in booking his place in the semis with a 6-2 6-1 demolition job on sixth seeded Fabio Fognini.
Defending champion Ferrer was in imperious form in despatching his Italian opponent, breaking serve four times and winning 70 per cent of his first service points.
He next meets another Spaniard Tommy Robredo, who eased past world number 246 Julian Reister of Germany 6-3 6-2.
Almagro, who lost to Ferrer in last year's final, moved into the last four with a 6-1 7-6(3) win over Federico Delbonis of Argentina.
Almagro was in just as dominant form as Ferrer, throwing down eight aces and not once facing a break point as he wrapped up victory in 70 minutes.
He will face Stanislas Wawrinka, the third seed, for a place in Sunday's final.
Swiss world number 17 Wawrinka beat Albert Ramos 7-6(4) 6-4 to reach his first semi-final of the season.
In Memphis, top seed Marin Cilic was bounced out at the quarter-final stage by Japan's Kei Nishikori.
Croatian Cilic blasted 12 aces past his fifth seeded opponent but converted only one of two break points in the 72-minute quarter-final loss.
"It's getting better every match ... little by little," world number 22 Nishikori said when asked about his game.
"I was dominating with my serve."
Nishikori, who became the first Japanese player into the Memphis semi-finals since the tournament's inception in 1976, will meet Marinko Matosevic on Saturday after the Australian pulled off another upset by outlasting seventh-seeded Ukrainian Alexandr Dolgopolov 6-7 6-2 6-4.
Spain's Feliciano Lopez will play Uzbek Denis Istomin in the other semi-final.
Lopez ended American wild card Jack Sock's run 6-4 6-3 in 82 minutes, collecting seven aces and saving four of five break points, while Istomin eliminated American Michael Russell 6-4 7-6.
Marseille Open results:
6-Gilles Simon (France) beat 2-Juan Martin Del Potro (Argentina) 6-4 6-3
1-Tomas Berdych (Czech Republic) beat 7-Jerzy Janowicz (Poland) 6-3 6-7(0) 6-3
3-Jo-Wilfried Tsonga (France) beat Bernard Tomic (Australia) 4-6 6-3 7-6(10)
Dmitry Tursunov (Russia) beat Gilles Muller (Luxembourg) 7-6(7) 1-6 7-5
ATP Buenos Aires results:
2-Nicolas Almagro (Spain) beat Federico Delbonis (Argentina) 6-1 7-6(3)
3-Stanislas Wawrinka (Switzerland) beat 8-Albert Ramos (Spain) 7-6(4) 6-4
1-David Ferrer (Spain) beat 6-Fabio Fognini (Italy) 6-2 6-1
Tommy Robredo (Spain) beat Julian Reister (Germany) 6-3 6-2
Memphis International results:
Denis Istomin (Uzbekistan) beat Michael Russell (U.S.) 6-4 7-6(5)
Feliciano Lopez (Spain) beat Jack Sock (U.S.) 6-4 6-3
Marinko Matosevic (Australia) beat 7-Alexandr Dolgopolov (Ukraine) 6-7(6) 6-2 6-4
5-Kei Nishikori (Japan) beat 1-Marin Cilic (Croatia) 6-4 6-2