Ruud will face Britain's Jack Draper, who beat Italian Lorenzo Musetti 6-3, 7-6 (7-4) in the other semi-final on Friday (Saturday AEST) to make his third final of the year.
Ruud received treatment on his rib three games into the match and went on to win 6-4, 7-5 on the Caja Magica centre court.
The Norwegian, ranked No.15 in the world, saved 15 of the 18 break points he faced against the 21st-ranked Argentine.
Ruud said he felt something in his rib during the warm-up, just before going out on the court. He said he "felt it in nearly every shot, especially the serve".
"I wasn't sure I was going to be able to finish the match, honestly," Ruud said.Â
"I got a couple of painkillers, which is not the ideal thing, but at the same time in a situation like this, you have to do that now and then. It was easing and getting better as the match went on."
A former world No.2, Ruud will return to the top 10 thanks to his campaign in Madrid. He could reach No.6 in the rankings with a win in the final.
Ruud, who has won 12 ATP tournaments, would also become the first Norwegian to lift an ATP 1000 trophy since the series was introduced in 1990, according to the ATP.
Ruud had lost two matches in a row against Cerundolo, who had earlier knocked out top-seeded German Alexander Zverev.
The sixth-ranked Draper improved his record against 11th-ranked Musetti to 4-0.
Draper won at Indian Wells in March. After his quarter-final victory in Madrid, he secured a top-five ranking for the first time.
Coco Gauff and top-ranked Aryna Sabalenka will meet in the women's final on Saturday (Sunday AEST).