Dhananjaya de Silva's 153* puts Sri Lanka in command
Dhananjaya de Silva came to the crease with Sri Lanka only 23 runs ahead, with three wickets down, and their most experienced batter injured an unable to play normally.
By the time his work ended on day four, Sri Lanka were 279 runs ahead, with two wickets still in hand, in firm control.
De Silva, in sublime touch for much of this knock, was 153 not out off 259 balls by stumps, put on 78 alongside Pathum Nissanka to rescue Sri Lanka from immediate peril, and made 51 with Ramesh Mendis during a second session in which West Indies' spinners made a four-wicket charge, but it was with No. 10 Lasith Embuldeniya with whom he produced the most consequential and perhaps match-defining partnership - an as-yet unbeaten association of 107 runs, during which he completed his eighth Test century, and breezed past 150, plundering 73 runs off 98 balls from a tiring attack.
He was dropped twice - both times off the bowling of Veerasammy Permaul.
On 5, wicketkeeper Joshua Da Silva could not hold on to a big edge, though this was an incredibly difficult chance, the ball traveling quickly and hitting only the tips of his gloves.
The opportunity West Indies will rue more came when de Silva was on 116 and attempted a slog sweep with the field spread.
Permaul got himself under the swirling top edge as he ran toward the sight screen, but ultimately could not wrap his fingers around the ball.
If he'd caught that, Sri Lanka would have been nine down with a lead of 218.
It's possible West Indies would already have been batting by now, chasing a difficult but not outlandish target.
The earliest stretch of the de Silva-Embuldeniya stand had been tense.
Embuldeniya had come in with Sri Lanka only 179 ahead, and with Permaul having taken two wickets in quick succession with the second new ball.
De Silva was batting on 80, and so the hundred was in sight as well.
But the pair settled into a rhythm - de Silva farming the strike to give Embuldeniya only the last two or three balls an over, where possible.
Though de Silva didn't always attempt to hit boundaries early in those overs, largely because Kraigg Brathwaite had positioned fielders on the rope.
Embuldeniya scratched his way through that period, facing 20 balls before de Silva was able to complete the century. After that, de Silva moved up the gears.
He hit Roston Chase behind point for four soon after getting to a hundred, then slammed him over long-on two balls later.
The field spread back to him, he ran hard twos, and when Brathwaite brought the seamers back, attacked them as well. Having got to his hundred off his 189th delivery, he added the next 50 off 65.
Embuldeniya played an unambitious supporting hand, all the way up to stumps.
He faced 110 balls for his 25.
He did not hit a single boundary, but was largely good in defence.
West Indies, through this period, seemed ragged and short of ideas.
Brathwaite bowled a strange spell in which he occasionally tossed the ball up almost comically high.
West Indies will be kicking themselves for letting the situation slip, after having surged through the middle session, and having kept the opposition in check even before lunch.
Sri Lanka had begun the day still three runs in arrears, and with two inexperienced batters at the crease. Permaul got one to bite to take Charith Asalanka's inside edge, which popped up off the pad to short leg, in the first hour of play.
And although Nissanka completed his third fifty of the series in the company of de SIlva, he was out the ball before lunch too - lbw to Chase.
Chase struck again in the afternoon, pocketing a return catch off Dinesh Chandimal, before Brathwaite was the beneficiary of the only wicket Sri Lanka truly threw away in the day - Mendis holing out at deep midwicket the over before the second new ball was due.
Permaul removed Suranga Lakmal and Angelo Mathews cheaply with that new ball.
He finished the day on 3 for 100 - West Indies' best analysis.
Sri Lanka 328 for 8 (Dhananjaya 153*, Embuldeniya 25*, Permaul 3-100, Chase 2-82) and 204 lead West Indies 253 by 279 runs