Francesca Schiavone reached the last four of the GP de SAR La Princesse Lalla Meryem with a battling win over Frenchwoman Alize Cornet.