O’Sullivan took a 3-1 lead into the mid-session interval, but runs of 88 and 111 from Ding levelled matters.
A 105 from O’Sullivan gave the ‘Rocket’ the advantage again but Ding ground out the eighth frame.
However, O’Sullivan put together breaks of 91 and 125 to secure his spot in the final.
O’Sullivan will face4 Bristol's Judd Trump in the final after his 6-4 win over world number two Neil Robertson.
The final is the best of 19 frames with £100,000 for the winner.