The opening batsman hit 10 sixes and 12 fours before being dismissed for 118 from 43 deliveries in Indore on Friday.
The 30-year-old matched the 35-ball record set by South Africa’s David Miller against Bangladesh in October.
India, who lead the three-match series 2-0, finished on 260-5, with Sri Lanka only managing 172-9 in reply.
Further woe for the tourists came as all-rounder Angelo Mathews pulled up with a hamstring injury after two balls of his third over, and was unable to bat, leaving them a man short.
The home side’s total was the equal second highest score in T20 internationals, three short of Australia’s record of 263-3 against Sri Lanka last year.
India won the first game by 93 runs on Wednesday, with the final match in Mumbai on Sunday.