A gritty 66-run stand between Charuka Peiris and Senesh Hettiarachchi almost took Thomians through to tea untill Royal struck back in straight balls to leave Thomians at 158 for 8.
Royal need just two wickets to stage a stunning victory, after nearly dominating the entire match.
Thomians, having regained the shield back in 2019, were fighting a lost battle, while, on the other hand, Royalists, were looking to finish off formalities.
Despite thrills, spills, and edges, Charuka Peiris and Senesh Hettiarachchi virtually saw them through nail-bailing moments.
Exactly when Thomians calmed the panic and appeared as going to tea after a wicket-less session, Royalists found the breakthrough.
Having stitched a desperately-needed 66-run partnership for the seventh-wicket stand, Charuka Peiris finally gave up.
Ramiru Perera added insult to injury, striking two-in-two, reviving their hopes that had been delayed for a while.
Akash Fernando was the second victim, caught at silly point, destroying all the good work that preceded.
Hettiarachchi was not out on 42.
Brief scores at tea:
Royal: 326 for eight decl (74) (o’night) (Dasis Manchanayake 137, Ramiru Perera 128, Ovina Abanpola 30, Akash Fernando 4/55, Kavindu Dias 3/58, Nathan Caldera 1/64) and 168 for four decl (26) (Dasis Manchanayake 57, Ramiru Perera 46 not out, Uvindu Weerasekera 28, Akash Fernando 4/35) lead by 341
STC: 153 all out (55) (Senadhi Bulankulama 40, Mahith Perera 30, Ranuka Malaviarachchi 2/35, Bulan Weerathunga 3/26, Sandesh Ramanayake 2/36, Sineth Jayawardena 2/9, Ramiru Perera 1/30) and 157 for eight (55) (Senesh Hettiarachchi 42 not out, Charuka Peiris 22, Dharmarathna 2/27, Perera 2/16, Malaviarachchi 1/34, Weerathunga 1/18, Ramanayake 1/24, Manchanayake 1/9)