The 16-times grand slam winner will take on Australian Nick Kyrgios in Sunday's final as the eighth seed progressed to his first final of the season after beating German second seed Alexander Zverev 6-3 7-5 in the last four.
Nadal, the French Open and US Open champion, has won his past 11 matches, and is set to bid for a 75th career title in what will be his fourth final in Beijing.
Nadal heads to French Open with confidence boost after beating Djokovic
The 16-times grand slam winner took control from the start, winning 13 consecutive points on his own serve and breaking Dimitrov to seal the first set in 35 minutes.
Nadal led the second 3-1 but world number eight Dimitrov fought back to level at 4-4 before clinching the set.
Bulgarian Dimitrov's eye-catching shots were not enough to overcome the 31-year-old, however, and Nadal broke serve three times in the deciding set.
Kyrgios dominated the first set and the hard-hitting Australian served seven aces in the second to frustrate 20-year-old Zverev who was favourite to progress after sealing his spot in the ATP Finals on Friday.
Nadal will be gunning for his sixth title of the season but faces a tough challenge against world number 19 Kyrgios who has beaten him twice in their four previous meetings.
China Open semi-final results:
- 1-Rafa Nadal (Spain) beat 3-Grigor Dimitrov (Bulgaria) 6-3 4-6 6-1
- 8-Nick Kyrgios (Australia) beat 2-Alexander Zverev (Germany) 6-3 7-5
Injuries, upsets and champions rising - What did we learn from Italian Open?
Nadal fends off Djokovic assault to win Italian Open for 10th time