The Argentine eighth seed will now meet world number one Novak Djokovic for a place in Sunday's final.
The match was barely five minutes old when Del Potro slipped on the grass on Centre Court, prompting fears that he would have to retire. However, he was soon back playing after receiving medical treatment to his knee.
The former US Open champion seemed unfazed by his injury scare as some big hitting from the baseline saw him take the opening set 6-2 in emphatic fashion.
Ferrer was out of sorts during the second and a late break allowed Del Potro to serve it out 6-4.
The Spaniard looked more like his dogged self in the third as both players continued to hold serve, but it was the world number eight who came through the tie-break 7-5 to seal his progress through to the last four.