Second seed Nadal, who is on the comeback trail after missing seven months due to a left knee injury, will face another Spaniard, three-time defending champion and top seed David Ferrer, in the final.
Ferrer defeated Italy's Fabio Fognini 6-3 6-7 6-1 earlier on Friday.
"I moved well today," Nadal said. "I can't say that (my knee) didn't trouble me sometimes, but the troubles are normal. What is most important is I didn't have any limitations."
Ranked 12th in the world, Almagro, the tournament's third seed, is the highest-ranked opponent Nadal has faced in his comeback so far.
While the former world number one appeared to move well throughout the match, he did visibly limp on his left leg after losing the first game of the second set.
But moments later the limp was gone and Nadal, now ranked fifth in the world, jogged to the opposite side of the court as the players changed sides.
Nadal, an 11-times Grand Slam champion, staved off all four break points he faced while breaking Almagro once each set.
That proved the difference and secured him a place in the final against Ferrer.
Last month, Nadal reached the final of the Chilean Open, and followed that up by winning the Brazil Open.
Acapulco marks his third clay-court tournament in four weeks.
Earlier, Ferrer was made to work hard to book his place in the final. The three-times defending champion in Mexico had easily beaten Fognini when the pair met at last week's ATP tournament in Buenos Aires, but this match was an altogether different affair.
The world number four claimed the opening set without too much fuss but Fognini, who had won just three games in the previous encounter, hit back to take the second on a tie-break and force a decider.
Ferrer looked to have lost his momentum in the first game of the third set as Fognini brought up three break points, but Spain's number one player on current form saved all three before going on to hold.
It proved to be a critical moment in the match as Ferrer, his composure having returned, breezed through the remainder of the set to seal victory in two hours and 23 minutes.
Victory for the top seed, who already has two titles to his name this season - Auckland and Buenos Aires - was his 19th on the bounce in Acapulco.