Vijay let out a cry of anguish, and smashed his bat into the turf, wielding it like a scythe, and continued to curse at himself as he walked off the field.
Not for the first time in his career, a moment's indiscretion against spin had cost Vijay the chance to turn an impressive score into a monumental one. At the Gabba in December 2014, he was caught behind on 144 off Nathan Lyon while coming down the pitch in search of a big hit. Earlier this year, in Hyderabad, he had been bowled around his legs on 108 while trying to lap-sweep Taijul Islam. A couple of months later, in Ranchi, he had been stumped on 82, with three balls left for lunch, while looking to go big against Steve O'Keefe.
Vijay grew up idolising Mark Waugh, and along with some of the Australian's easy elegance, he seems to have picked up the curse of not being able to score double-hundreds. Waugh made 20 Test centuries and finished with a top score of 153; Vijay has 10 hundreds now, and a best of 167.
"Yeah, I really want to," he said, when asked at the end of the day's play if he's been yearning to make a really big score. "I've been trying for a while now. It should come one day, and I'm waiting for that, and yeah, I was actually mentally and physically fit today. It could have been happening in this match. Hopefully in the next [opportunity]."
It wasn't a double, but it was 128 high-quality runs, each of them a reminder of everything India might have missed over the last eight months and four Test matches, if they hadn't been blessed with an unprecedented depth of options for the opening slots. India have only rarely had two top-class Test openers playing at the same time. They've never before had three.
With Shikhar Dhawan sitting out for personal reasons, Vijay slotted back in. Right from the first ball he faced late on day one - a probing, fourth-stump ball from Suranga Lakmal that he left alone, almost inevitably - it was like he hadn't been away, hadn't been recuperating from surgery on a wrist that had troubled him all through the 2016-17 season.
When KL Rahul chopped on in the fourth over of India's innings, the feeling intensified. Vijay had never really gone away; he had been batting alongside Cheteshwar Pujara all along.
No partnership of 209 can feel inevitable, but this one came close. At least a century stand seemed inevitable, even when Sri Lanka's three main bowlers delivered tight spells in the early part of their partnership, making them spend 128 balls for their first 40 runs. Vijay and Pujara had to work extremely hard for runs in that period, but they knew how to deal with that sort of situation, having done it many times in the past.
Herath was particularly tricky to handle. With small changes in his release points and wrist position, he teased Vijay, bowling largely undercutters that skidded on towards the stumps, but occasionally flighting one with overspin. He kept flirting with Vijay's inside edge, as he pushed at a few balls, not quite certain about where they would land or which way they would go; early on, most just kept going with the arm.
Herath nearly got a wicket with one of these, when Vijay tried to step out and knock him off his length, but failed to reach the pitch of the ball and flicked in the air. It went off the inside half of the bat towards short leg. It didn't stick.
Then, in his fifth over, Herath got one to rip past Vijay's outside edge and followed up with a slider that, from the same spot on the pitch, sneaked in and hit the inside edge. It was a difficult period, but Vijay and Pujara knew it wouldn't last.
"That's Test cricket and you have got to respect it," Vijay said. "I think that's how innings have got to be built. The easy way is being more aggressive and take high percentage of risks, but they were bowling well and so we thought that we can buy time now and maybe cash in latter half of the day."
The cashing in happened in spurts, whenever Sri Lanka brought on their fourth and fifth bowlers. Dasun Shanaka picked up five wickets in green, overcast Kolkata, but take away those conditions and his medium-pace becomes far less of a threat. Dilruwan Perera has five five-wicket hauls in Test cricket, but also an economy rate above three an over, which puts him in a strange bracket - he's a better bowler than, say, Roston Chase, who bowls a lot of overs but is clearly a batsman first, but he isn't quite a proper frontline spinner.
On this day, their shortcomings became quickly apparent.
Vijay drove Shanaka for two fours in his first over of the match, sending him out of the attack, temporarily. Dilruwan replaced him, and Vijay greeted him with a boundary through the covers. A cagey morning quickly gave way to Indian dominance. Between Shanaka's introduction and lunch, they scored 50 in 13 overs. Vijay went from 26 off 86 balls to 56 off 129.
The second session was all about damage control from Sri Lanka and yet their defensive fields seemed powerless to stop Pujara and, in particular, Vijay, who reminded Indian fans of the many shades that exist in his batting between the two poles he's most often identified with - IPL dasher and Test-match blocker and leaver.
He reminded them of his wrists, which he employed to drill a good ball - good length, fourth-stump line - down the ground, between Lahiru Gamage and Pujara. He reminded them of his hands, deft hands that opened his bat face ever so slightly to glide a wide one from Suranga Lakmal between backward point and cover point, the resultant three runs bringing up the century stand. A few overs later, he picked up two with a similar shot to the right of third man, and followed up with a late chop to the same fielder's left.
He reminded fans of the arrogant streak that can still surface, from time to time, in his batting. "You are bowling at me?" That's what he seemed to tell Dilruwan, repeatedly. There was a reverse-sweep for four, off the top-edge, from wide outside leg stump; another, off the sweet spot, from middle stump; and forays out of his crease and deep into it for drives and whips to all parts.
More than that, though, the disdain for Dilruwan was evident in how easily Vijay knocked him around for singles. As Vijay's century neared, he bowled round the wicket to him, with five fielders on the leg side: three on the boundary, and two short midwickets. Three times in a row, Pujara and Vijay worked him into the deep for ones, between and either side of the two short midwickets. Then Perera bowled two dots with Vijay on 95.
Next ball, Vijay slid noiselessly away from leg stump and pushed a leg-stump ball to mid-off, inside-out. The fielder was neither deep enough to save four nor close enough to save one. Vijay almost ambled the single. He would play the same shot to move from 98 to 99, and then from 99 to 100. He was toying with Sri Lanka.
Vijay had scored 102 off his last 135 balls when he played that final, fatal sweep off Herath. At that tempo, with the bowlers and fielders at his mercy, a double-hundred might have felt deliciously achievable. It wasn't to be, but it was just another reminder to his fans of the batsman they have known and loved and waited eight months to watch.