El tenista germano, principal cabeza de serie, acabó con la racha de nueve victorias seguidas del australiano en este torneo, del que se proclamó campeón el año pasado.
El alemán, tercero de la ATP, superó a su oponente por 6-7/8-10, 6-4 y 6-3 y sigue firme en un torneo del que es principal favorito ante las ausencias de Jannik Sinner y Carlos Alcaraz.
El jugador alemán pugnará por un lugar en la final ante el ruso Karen Khachanov.
Vencedor en sus tres duelos anteriores, Zverev dio una muestra de carácter ante Popyrin para avanzar a sus primeras semifinales del Masters 1000 de Canadá desde que en 2017 ganó el título a los 20 años.
Victoria de peso de Zverev
En un gris arranque de partido, el tenista europeo cometió cinco dobles faltas, pero consiguió forzar el tie-break, en el que desperdició una pelota de set con un defectuoso retorno a la red.
Inmediatamente después vio cómo Alexei se quedaba con la manga con un tiro afortunado que tocó en la red y cayó del lado de Sascha.
Tras el descanso, el número tres del mundo se arremangó para lanzarse a una remontada que encarriló gracias a un break temprano en cada set y culminó tras dos horas y 42 minutos de juego.
Alexander, que persigue su octavo título en torneos Masters 1000, se convirtió en el segundo tenista en activo que alcanza 75 semifinales de certámenes de la ATP, sólo superado por Novak Djokovic, que llegó a 196.