The Russian was broken three times in set two but hit back to win 6-3 0-6 6-3 and will now face Martin Klizan in the last four.
Slovakia's Klizan powered six aces past Ricardas Berankis of Lithuania on his way to a comfortable 6-3 6-2 victory.
Spain's Daniel Gimeno-Traver moved into the semi-finals with a routine straight-sets win over Flavio Cipolla.
The Italian put up little resistance in the first set and was unable to derail his opponent in the second, with Gimeno-Traver winning 6-2 7-5.
Italy's fourth seed Fabio Fognini beat Spain's Roberto Bautista-Agut 6-4 7-6 (7/1) in their quarter-final to set up a meeting with Gimeno-Traver at the next stage.