Top seed Juan Martin Del Potro saw off Kevin Anderson to book a semi-final showdown against Tommy Haas at the Citi Open in Washington.