Three wickets for 19 runs stalled India's start, and then Farveez Maharoof's hat-trick, during a period of play when four wickets fell for no runs, destroyed the middle order's rebuild and practically finished the dress rehearsal for the final in Sri Lanka's favour. Thrice India seemed to have inched ahead of the game, thrice a spirited Sri Lanka pulled them back through superb fielding and persistent bowling.
Some familiar scripts played themselves out. Two Sri Lankans, who might not even get a chance in the final, created selection headaches: Rangana Herath with two wickets in the first half of the innings, and Maharoof with a five-wicket haul. Two of Sri Lanka's comebacks were triggered by special fielding efforts. Tillakaratne Dilshan killed any possibility of a contest during the small chase with a cameo at the top.
Having put India in, to try batting under lights in case they need to in the final, Sri Lanka soon realised they needed to take the pace off their bowling. With Nuwan Kulasekara and Lasith Malinga rested, Chanaka Welegedara and Maharoof tied the openers down with their cutters. India would have thought they had had a good start when they crossed five an over with Karthik's two boundaries off Maharoof in the 11th over. Suraj Randiv had other ideas. When Gautam Gambhir, and everybody else, thought he had pulled Angelo Mathews wide of midwicket in the 12th over, Randiv flew to his right to show it wasn't actually wide enough. Soon Virat Kohli got a good delivery from Maharoof, one that held its line outside off and took the edge.
Herath got Karthik with one that ripped across, and 58 for 1 became 77 for 3. Dinesh Karthik's 40 meant he had converted only one of his last 13 20-plus scores into a fifty. Sri Lanka were feeling it now: on one occasion the point fielder ran to the leg side just in case the square-leg fielder giving chase needed to relay the throw from the deep.
Suresh Raina and Rohit, though, batted sensibly. Their 33-run stand seemed to have weathered the storm, and Raina had even chipped Randiv for a lovely six over long-on. Just then Herath struck again. In the 23rd over, Raina misread the length while going for the sweep, and was lbw.
Then came India's best partnership. Rohit and MS Dhoni ran hard, kept finding the odd boundary, and carried the reconstruction at a healthy pace without taking many risks. They added 79 for the fifth wicket, and with India edging ahead the Powerplay seemed just around the corner. A superb piece of fielding - a direct hit from point to catch Dhoni short at the non-striker's end - from Chamara Kapugedera then started another turnaround.
Maharoof hasn't enjoyed the best of luck in the Asia Cup, his comeback tournament. He was hit for two sixes by Shahid Afridi, after which he bowled superb cutters and seamers without any result. His first spell today had been similar. He troubled both the openers, but that edge kept eluding him. His luck was about to change when he was brought back in the 37th over.
In his second over, Maharoof was gifted an lbw by Ravindra Jadeja, who walked right across the stumps and didn't quite know what he was trying. That was one ball after Dhoni's run-out. Next was Praveen Kumar, who looked to fend a shortish delivery and played it on. Zaheer perhaps got the best of the hat-trick deliveries, one just back of a length, close enough to off to make a tailender play and edge. Sangakkara dived to his right to take a one-handed catch and189 for 4 had become 189 for 8 in four deliveries.
Ashok Dinda didn't use his brain and kept slogging at Maharoof repeatedly before finally exposing all three stumps and giving Maharoof the five-for. Given his rotten luck earlier in the tournament, Maharoof perhaps deserved the breaks. Rohit, so used to being the boy on the burning deck, scored a fifty but his friends in the tail let him down. He tried his best to get as many runs as possible, but ran himself out in the 43rd when trying to retain strike.
Sri Lanka's batsmen, though, didn't have those testing times under lights that they wanted. Much of it was down to Dilshan, who hit Zaheer for four, four and six in his first over. By the time Dilshan provided India some respite with a mis-hit to mid-on, Sri Lanka had already reached 38 in the sixth over. Upul Tharanga took over from where Dilshan left, and punished Praveen and Ashok Dinda severely. Zaheer meanwhile tested him outside off, and finally got him to edge one away-going delivery. Dilshan's 24 and Tharanga's 38, though, had almost put the matter beyond India by then.
Sangakkara and Mahela Jayawardene scored patient fifties to see the hosts through with 12.3 overs to spare.