The top-seeded Ferrer started strong, breaking Monaco's first service game with a combination of deep groundstrokes and timely approaches to the net.
Down 3-0, Monaco saved three break points in the fourth game, sparking a rally in which he broke Ferrer three times to take the opening set.
The fifth-ranked Ferrer cut down his errors and rediscovered his baseline game in the second set to force a third.
Ferrer appeared set to repeat last year's final appearance when he was up 2-0, but his serve deserted him and Monaco surged to claim the match.
"It was a match with a lot of ups and downs," said Monaco. "We have similar styles. He played a great second set, but I took advantage of a break and had some luck with his double faults in the final set."
Monaco improved to 4-3 all time against Ferrer.
"Tomorrow will be very tough," Monaco said. "Granollers beat me last year here in quarters and has played some great matches so far."
Del Potro started well on the indoor hard-court, but Granollers took control of their semifinal through his serve-and-volley game to win the first set.
In the second, Granollers saved a set point to force a tiebreaker and won six straight points to rally from 4-1 down to seal his place in the final.
"I didn't think about reaching the final," Granollers said. "I just focused on the game at hand. I am very happy with how the tournament is going."
The 34th-ranked Granollers, who won his second ATP title in July, lost to Ferrer in last year's all-Spanish final.
"He played a great match," said Del Potro. "He doesn't serve hard, but he hits good angles and adds different effects. I needed to play better."
Del Potro's exit meant Czech player Tomas Berdych locked up his place among the top eight players for the season-ending ATP World Tour Finals. With only the Paris Masters left as a qualifier, there are just two spots remaining for the season finale in London.
"I will have to win in Paris to have a chance," Del Potro said.