Top seed Juan Martin del Potro edged Radek Stepanek 6-4 3-6 6-3 to progress to the semi-finals of the Sydney international.