Spain's Nadal overcame the top-ranked, two-time defending champion 6-4, 3-6, 7-6 (7-2) in the late semifinal at Montreal's Stade Uniprix.
Nadal, who won the Canadian event in in 2005 and 2008, stretched his Rogers Cup winning streak to 13 match and improved to 21-15 all-time against Djokovic.
His opponent in Sunday's title tilt will be 11th-seeded Raonic, who also needed a third-set tiebreaker to get past Vasek Pospisil 6-4, 1-6, 7-6 (7-4) in an all-Canadian semifinal.
Raonic, seeking his fifth career ATP Tour title, is also looking to become the first Canadian to take the event since Robert Bedard did so in 1958.
Toddler uninjured after being knocked over by Obama family dog
Gal Gadot cast as Wonder Woman for 'Batman vs. Superman'