The 19-year-old hometown prodigy will play for the title on Sunday against the winner of a later match between Czech qualifier Marie Bouzkova and 23-time Grand Slam singles champion Serena Williams.
Andreescu won her only WTA title in March at Indian Wells.
Kenin stunned Australian top seed Asheligh Barty in the second round, ensuring the Aussie would fall from the world number one perch, and ousted Williams in the third round at the French Open.
But the 20-year-old American couldn’t manage her third career WTA title after lifting trophies at Hobart in January and Mallorca in June.
Kenin defeated Andreescu in an Acapulco semi-final earlier this year but the Canadian avenged the defeat at Miami and held firm at the finish to frustrate the American once again.
Kenin denied Andreescu on three match points to hold in the 12th game of the second set and reach the tie-breaker, where Andreescu took advantage of her fifth match point chance of the semi-final to advance after two hours 11 minutes.