Rohit Sharma made a stunning 100 not out to help India beat England by seven wickets in the third Twenty20 and secure a 2-1 series victory.
England, batting first, could manage only 87 runs from the final 10 overs to post 198-8 in Bristol, despite Jason Roy's 67 from 31 balls.
Rohit shared an 89-run stand with Virat Kohli and accelerated in the final overs to put India in control.
He and Hardik Pandya closed out the match with eight balls to spare.
It was the highest successful run chase by any team against England in an international T20.
Three terrific catches - one from Jake Ball and two by Chris Jordan - interrupted India's chase.
However, Pandya took 20 runs from the 18th over - bowled by Ball - to put India ahead of the run-rate and turn the match firmly in their favour.
A lofted drive from Pandya, who made an unbeaten 33 from 14 balls, secured an impressive victory from India in front of a packed crowd.
A three-match one-day series starts on Thursday at Trent Bridge, before the first of five Tests gets under way on 1 August.
England's leading Test wicket-taker James Anderson remarked that it was "not a day to be a bowler" as both sides made hay on a good pitch with short boundaries.
The bowlers had their moments, certainly. Seven wickets went down in the final 10 overs of England's innings and Ben Stokes - returning to the side after a hamstring injury in place of Joe Root - bowled smartly to restrict India at the start of their reply.
Some terrific displays of athleticism in the field, such as Jordan's stunning run and catch to dismiss KL Rahul, momentarily tipped things back in the favour of the fielding side too.
But on a pitch where anything that was too short or full could be flayed to the boundary, it rarely felt as though it was an even contest between bat and ball.
India rarely looked troubled in their run-chase, despite losing Shikhar Dhawan early to a superb, low catch from Ball at short fine leg.
Any hopes England had of applying pressure were snuffed out by Rahul, who arrived at the crease and drove his first delivery to the boundary.
Only moments of brilliance from England kept India in check. Rahul pounced on Ball, striking him for a straight six, but when he tried to repeat the shot, Jordan sprinted to his right at long-on to take a diving catch that left the batsman shaking his head.
But India's strength in depth meant the runs just kept coming. Kohli and Rohit's partnership mixed patience and aggression, the two seeing off sole spinner Adil Rashid before hitting the pace bowlers to all sides of the ground.
Kohli was left in disbelief when he drove a delivery straight back to Jordan, who took a catch at waist height, but Pandya picked up where the captain had left off.
England captain Eoin Morgan shuffled his bowlers but saw David Willey hoisted over long-off for six by Rohit, before Pandya angled the same bowler for back-to-back fours in the 18th over.
A dab to backward point brought Rohit his third T20 century, before Pandya hammered a Jordan delivery back over his head to close out the win in emphatic style.
Jason Roy and Jos Buttler got England off to a blistering start
England will feel they missed their opportunity with the bat after Roy and Jos Buttler got off to a blistering start by adding 94 inside eight overs.
A six brought up Roy's half-century from 23 balls - the joint second quickest for England in T20s - and the hosts looked set for a total in excess of 200.
However, India slowly brought themselves back into the match. Buttler was bowled heaving at Kaul Siddarth, while Roy edged a slower ball from debutant Deepak Chahar.
Credit has to be given to India's bowlers, who recovered well from a chastening start. Pandya mixed up his pace and length to finish with 4-38, having Stokes caught at mid-off for 14 and enticing Bairstow, on 25, to edge behind.
Dhoni, who took became the first player to take five catches in a T20 international, removed his glove before the final ball of the innings, making it easier for him to run out Jordan as he tried to pinch a bye.
England captain Eoin Morgan on BBC Test Match Special: "We failed to execute big shots and it didn't come off. The execution wasn't up to scratch. Capitalising on starts like is something we have to learn from.
"That total isn't defendable when a guy comes out and plays like that on a small ground. India played better than us."
India skipper Virat Kohli: "The comeback from the bowlers was outstanding. At one point we thought they would get 225-230. The character we showed is something we're very proud of.
"It was a brutal day for the bowlers. The guys produced the goods for us. We had to make the batsmen feel like they would make mistakes. We applied pressure and pulled the game back nicely."
India batsman and man of the series Rohit Sharma: "I like to be calm, not to panic, because I know once you're there you can make up time. With the wicket being so good, I knew I just needed to stay there as long as possible."