The world No 1 prevailed 6-4 6-4 in a gruelling, tightly-contested match and he will contest his sixth Rome final against Roger Federer or Stan Wawrinka.
Djokovic broke Ferrer???s serve at the second attempt but the opening set proved a more arduous task than that early success suggested.
A series of straightforward holds took the score to 4-3 where the Spaniard gritted his teeth and refused to budge, holding his own serve to trail 5-4.
Ferrer was unable to take advantage of break point in the critical game of the first set, although with Djokovic at advantage, he won a tense rally to force the Serb to dig deep to close it out.
Ferrer???s grit extended into the second set but was matched by Djokovic, whose greater quality began to tell. Leading 3-2 in the set, the Spaniard erred on a pair of break points in a vital moment before allowing Djokovic to find a way back.
Both players then held serve convincingly until, at four apiece, Ferrer showed glimpses of fatigue and dismay at his opponent???s relentlessness, and Djokovic broke him to love to move within a game of the final.
Djokovic served out for victory and extended his unbeaten streak to 21 consecutive matches while improving his winning record over Ferrer to 20-5.