The former world No.7 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 No.74 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 after 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 after his Round of 16 victory over No.1 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.