After bowling the Warriors out for 234 on the third morning to earn a first-innings lead of 119, the Titans put on 275 for six declared in their second innings to set a target of 395.
David Wiese then claimed the wicket of Michael Price in the nine overs that were possible before bad light ended the day’s play with the Warriors on 46 for one.
While it still remains possible that the Warriors could score the 349 runs still required to win the match, it would represent a major achievement given that it would be the highest score of the match so far.
The Warriors went into day three on 165 for eight in their first innings, and did well to add another 69 runs to their total with Somila Seyibokwe (40) and Basheeru-Deen Walters (38) putting on 70 in 10 overs.
Wiese broke the partnership to record figures of 4 for 52 in the first innings, before Shaun von Berg (3 for 36) ended the innings when he had Seyibokwe stumped.
The Titans had just one minor second-innings blip on their march to the lead they wanted, which came when Theunis de Bruyn was bowled by Thandolwethu Mnyaka for 35 and then captain Henry Davids was dismissed by Simon Harmer first ball.
Thereafter, things ran smoothly as Ernest Kemm hit 62, Qaasim Adams top-scored with 89 and Grant Thomson made 53 from 58 balls to set up the declaration.
Wiese then struck to bowl Price in the sixth over of the Warriors’ chase, leaving David White and Colin Ackermann to see out the remaining few overs.