Moya prevailed 6-2, 3-6, 7-6 (7-5) in a grueling marathon match against Ecuador's Nicolas Lapentti in two hours, 40 minutes.
In the third-set tiebreaker, he went up 4-2 and held on to give him a chance for his 17th victory in 21 career matches on the tournament's clay-court surface.
Lapentti recorded just two break points.
In the second semifinal, the No. 2 seed Almagro, a two-time champion at this event, torched 20-year-old Italian Fabio Fognini 6-1 6-1 in a match that took just 54 minutes.
Almagro was so dominant he converted five of seven break points and lost just nine points on his own serve.
Moya and Almagro meet Sunday for a first prize check of $77,300 in Almagro's fourth career ATP final.