The result has ended a 41-match winning streak for the Spaniard at the competition spanning over 11 years.
The world number one, who failed at the quarter-final stage of the Monte Carlo Masters, started strongly against his compatriot.
Almagro was able to break Nadal's serve, but three break points ensured the top seed the lead, while his opponent could only get two games on the board.
It was a better effort from Almagro in the second set as he held his serve strongly, while Nadal was just as stubborn during his service games.
Nadal squandered five break points with the second set at 4-3 in Almagro's favour, and it was eventually decided with a tie-break, which the sixth seed clinched 7-5.
A repeat of last year's final was pushed into a third set, which went by the way of serve until Almagro was able to grab a vital break to push on and clinch the match.