Seven-time champion Roger Federer advanced to his 10th final at the Gerry Weber Open where he will play Italy's Andreas Seppi.
Federer defeated big-serving
The Japanese player had his lower left leg bandaged and was in clear discomfort.
Seppi also had a short quarterfinal on Friday when fourth-seeded Gael Monfils pulled out with a right knee injury when Seppi led 6-1, 1-0.
In contrast to Federer, Seppi was playing his first semifinal in his sixth appearance at Halle.
Federer won just five points on Karlovic's serve in the first set but made a mini-break to go 4-3 up in the first tiebreaker. He won the set on Karlovic's double-fault.
In the second tiebreaker, Federer correctly challenged a call that would have put Karlovic ahead 4-3 and secured another mini-break when Karlovic hit a return into the net. He took the first of two match points to wrap up the match in 1 hour, 28 minutes.