David Goffin moved within a match of his first ATP Final in over a year after fighting back to beat Roberto Carballes Baena 6-7 (6-8) 6-4 6-0 at the Grand Prix Hassan II.
The former world number seven saw off the Spaniard in a three-set quarter-final to book his place in the last four, 14 months on from his last title in the Open Sud de France.
Goffin, ranked 74th in the world and unseeded for the event in Marrakech, was forced to fight across a gruelling first set, which Baena edged out in a tie-break.
But he fought back to level things in the second before sweeping through the third set unanswered.
Goffin will face Argentine Federico Coria following the latter's 6-7 (1-7) 6-1 6-4 comeback win over Richard Gasquet.
Elsewhere, Alex Molcan's run continued after the Slovakian won 4-6 6-3 6-4 against Botic van de Zandschulp following his last-16 victory over top seed Felix Auger-Aliassime.
He will now face Laslo Djere in the last four after the Serbian overcame Italy's Lorenzo Musetti in straight sets.