Recorde as incidências da partida
A segunda cabeça de série bielorrussa triunfou por 1-6, 7-5, 7-6 (5) e vai defrontar a número um mundial Iga Swiatek (22 anos) no sábado, numa desforra da final do ano passado.
A clínica Swiatek passou mais cedo pela americana Madison Keys (29 anos) com uma confortável vitória por 6-1 e 6-3.
Rybakina dominou Sabalenka no primeiro set com duas quebras de serviço, mas enfrentou uma resistência muito mais forte no segundo, depois de ter estado um break acima no terceiro jogo.
A bicampeã do Open da Austrália, Sabalenka, pressionou fortemente o serviço da quarta cabeça de série e acabou por quebrar o serviço para empatar a partida a 4-4.
Rybakina ripostou de imediato, mas parecia abalada quando serviu para o jogo e a número dois mundial Sabalenka quebrou novamente para 5-5 e depois ganhou os dois jogos seguintes para forçar um terceiro set decisivo.
As jogadoras trocaram pontos de espera com apenas um break point alcançado - Sabalenka manteve-se firme para uma vantagem de 6-5 - antes do tie-break.
Sabalenka selou a sua vitória com um serviço tipicamente poderoso que Rybakina não conseguiu controlar.
A jogadora de grande envergadura tinha perdido três dos seus últimos quatro confrontos contra a cazaque, mas saiu triunfante quando se defrontaram pela primeira vez em terra batida.
Swiatek tem um registo de 6-3 contra Sabalenka, mas no seu único encontro na capital espanhola, esta última triunfou em três sets há um ano, conquistando o título.
Dominante no saibro, Swiatek quase não errou contra Keys no início do dia, cometendo apenas oito erros não forçados no encontro, deixando a americana praticamente sem hipóteses.
"Estou muito feliz por ter feito um jogo tão sólido hoje", disse Swiatek no court, depois de chegar à sua 11.ª final do WTA 1000.
"A Madison é uma jogadora fantástica com um jogo muito rápido e um grande serviço, por isso queria concentrar-me em mim e estou contente por ter estado concentrada", acrescentou.