Teenager Mirra Andreeva took down an ailing Aryna Sabalenka to reach the semi-finals of the French Open.