Blockx, de 21 años, se medirá por una plaza en la final al ganador del enfrentamiento entre el italiano Flavio Cobolli y el alemán Alexander Zverev, en el penúltimo partido del día.
El belga superó por 6-4 y 6-4 a Ruud, vigente campeón del torneo madrileño.
El miércoles quedó definida la primera semifinal del Masters 1000 madrileño, que disputarán el número uno del mundo, Jannik Sinner, y el francés Arthur Fils.
Blockx, número 69 del mundo, se había deshecho en la ronda anterior del argentino Francisco Cerúndolo.
También eliminó al chileno Cristian Garín, al estadounidense Brandon Nakasima y al canadiense Felix Auger-Aliassime.
El belga continuó su progresión en Madrid tras haber llegado a octavos en el Masters 1000 de Montecarlo y en el torneo de Múnich.
Blockx, que se enfrentaba por primera vez con Ruud, se mostró muy firme desde el fondo de la pista.
El belga rompió el servicio de su rival para ponerse 5-4 y cerrar el primer set con su servicio.
En la segunda manga, Ruud multiplicó las subidas a la red para tratar de sorprender a un rival muy metido atrás, pero sin lograr descolocar a Block.
Los dos se aferraron a su saque hasta que en el séptimo juego, el belga aprovechó la última de sus tres bolas de rotura para ponerse por delante 4-3 y confirmar con su saque el 5-3.
Ruud, cada vez más entregado, logró levantar dos bolas de rotura y partido en el noveno juego, pero sólo sirvió para postergar un juego más su derrota.
