© Getty Images
The 10th and 15th seeds couldn't be separated in the first set and needed a tie-break to decide the winner.
It was Lopez who earned the first mini-break, going 6-3 in front before Stepanek saved the three set points to level it up at 6-6.
The Czech couldn't complete the turnaround though as Lopez came through 9-7.
There was just one break point in the second set and Lopez took it before serving out the match 7-6(7) 6-4.
He will face fourth seed Grigor Dimitrov, of Bulgaria, in tomorrow's final.