The world number three overcame a second-set fightback from 18th-ranked Bencic to win 6-2 6-7 (2-7) 6-0.
She will play either Kiki Bertens or Sloane Stephens – who she beat in last year’s French Open final – on Saturday.
Halep has reached the Madrid final four times in her career and won the title in 2016 and 2017.
Bencic, who beat Japan’s Osaka in the quarter-finals, had won her past two meetings against Halep.
However, Halep, who describes clay as her favourite surface, was dominant in the final set.