Roger Federer a pris sa revanche sur le Letton Ernests Gulbis, son vainqueur à Rome, pour atteindre le dernier carré du Masters 1000 de Madrid vendredi.