Marin Cilic saw Fabio Fognini hit back from two sets down before holding off the battling Italian with a 6-4 6-1 3-6 6-7 6-3 win in the last 16.