Leicester cueman Selby won 6-5 after Carter earlier beat Shaun Murphy 6-3.
Selby raced into a 5-2 lead with breaks of 81, 134 - the 200th century of his career - and 64 after Ding had gone 2-1 up with runs of 55 and 75.
Facing defeat, home player Ding came back to 5-4 thanks in part to a break of 71 before forcing a decider by winning frame 10 on a respotted black.
Eurosport extend partnership with World Snooker
However Selby overcame his loss of momentum by claiming frame 11 with visits of 63 and 28 to disappoint the crowd.
He will face Carter on Sunday after the Essex potter dismantled Murphy's challenge.
Both players began sluggishly but it was Carter who ground out his chances and took a 3-0 lead against the defending champion.
It took Carter three visits to win the first frame, five to claim the second and four to take the third as both players struggled.
Murphy rebounded, rattling in his first half-century of the match to peg back the deficit, but Carter extended the advantage with a break of 87.
Again Murphy responded, this time with a run of 93, his best of the contest. Carter answered with a break of 101, the only century of the match, put him within a frame of the final.
A battling Murphy pinched another scrappy frame, lasting 33 minutes, to prolong the contest, but Carter was not to be denied.
'So upset' – Saengkham fights back from Covid-19 misery to stun Higgins
'Embarrassed himself' – Watch funny moment Vahedi messes up break-off shot