With this win, England now lead the three match T20I series 1-0.
Chasing 147 England openers Jason Roy (19) and Sam Billings (22) got off to a flying start as they slammed 36 runs in the first three overs of the innings.
But a bowling change did the job for the hosts. Leg-spinner Yuzvendra Chahal was brought in, in the fourth over and the Haryana player sent back Roy. The English batsman was beaten by low bounce outside the off side and drove the ball into his own stumps.
Two balls later, the lanky spinner departed Billings to bring India back into he match. Billings tried to play the ball across the line, but ended up yorking himself as the ball drifted back into his toes and then to the stumps.
England were now at 43-2 with 105 runs needed from 16 overs.
New batsmen Joe Root (46) and skipper Eoin Morgan (51) then forged a 83-run partnership for the third wicket to stabilise the innings.
Morgan was sent packing in the 16th over with just 22 runs needed in 28 balls. The English batsman was dismissed by debutant Parveez Rasool.
The fall of the wicket brought in Ben Strokes(2), who along with Root completed the formalities with 11 balls remaining.
For India Chahal scalped two wickets while Rasool chipped in with one wicket.
Earlier, put in to bat, India posted 147-7 with skipper Virat Kohli (29) and Mahendra Singh Dhoni (36 not out) being the major scorers for the team.
Openers K.L. Rahul (8) and Kohli started the match on a good note by scoring at a good pace.
But soon, Rahul, who was struggling to find his rhythm in the middle was sent back to the pavilion in the fifth over by pacer Chris Jordan.
Jordan delivered a short ball which tangled Rahul completely and as a result the short fine leg pocketed the top edge to dismiss him.
Two overs later, Kohli, who seemed good at the crease was sent packing by spinner Moeen Ali. The 28-year-old was caught at mid-wicket by Eoin Morgan, with India at 55-2.
Incoming batsmen Suresh Raina, who was making his comeback after a long hiatus and Yuvraj Singh (12) also failed to step up to the occasion as the Punjab batsman was caught by Adil Rashid at fine leg off Liam Plunkett in the 11th over.
Raina, who scored 34 runs in 23 balls, was the next batsman to go. In the 13th over, the Uttar Pradesh batsman was bowled by pacer Ben Stokes, who bowled an inch-perfect leg-stump yorker which off popped the bails.
Things got worse for the hosts when the new batsman Manish Pandey (3) was sent back by Ali in the next over. He was adjudged leg before wicket while trying to work the ball on the leg side.
Hardik Pandya also departed for nine runs. He was caught by Sam Billings at the deep backward point off Pacer Tymal Mills in the 17th over.
The last three overs saw some fight back from Dhoni, who was seeing the fall of wickets from the other end. His 29 -ball knock helped the hosts to get past the 140-run mark.
For England, Ali scalped two wickets while Mills, Jordan Plunkett and Strokes chipped in with one wicket each.