Having posted a total of 322/7 in their 50 overs, England proceeded to dismiss the visitors for 236 runs.
The hosts have now levelled the three-match series at 1-1. India had thrashed England by eight wickets in the series opener.
The only bright spot for India was the fact that former captain Mahendra Singh Dhoni reached two personal milestones during the game by completing 10,000 runs and 300 catches.
The veteran star joined Sachin Tendulkar, Sourav Ganguly and Rahul Dravid as the only Indians reach the 10,000-run mark in ODIs.
Dhoni is currently on 10,004 ODI runs. Sachin tops the list among Indians with 18,426 runs, Ganguly is second with 11,221 while Dravid is third at 10,768.
Chasing a challenging target, the Indian innings never really gathered any sustained momentum as they lost wickets at regular intervals.
The incisive England bowling was completed by some poor shot selection by the Indian batsmen which saw the visitors struggling at 60/3 in the 11th over.
The bit of resistance by the visitors was produced by skipper Virat Kohli and Suresh Raina, who came up with a fighting partnership of 80 runs off 97 deliveries.
But once Moeen Ali had broken the stand by clinching the prized wicket of Kohli, it was all downhill for the Indians.
Soon Adil Rashid bowled Raina, who top scored for India with 46 runs.
Pacer Liam Plunkett, who was in superb form, was the most successful among the England bowlers with figures of 4/46.
Earlier, Joe Root spearheaded a strong batting effort with an unbeaten century to help England post a challenging total.
Although a disciplined Indian bowling attack jolted the hosts at regular intervals, Root kept England sailing as he was involved in a couple of valuable partnerships with Eoin Morgan and David Willey, both of whom posted half-centuries.
Root, who brought up the 12th century of his career, remained unbeaten on 113 runs off 116 balls which included eight boundaries and a six.
Opting to bat first, openers Jason Roy (40) and Jonny Bairstow (38) started cautiously as England crossed the 50-run mark in 7.2 overs.
Last match’s hero Kuldeep Yadav drew first for India as he broke the 69-run opening stand in the 11th over, with the wrist spinner sending back Bairstow before dismissing his partner – Roy in the 15th over, leaving England at 86/2.
He finished up with figures of 3/68 runs while Umesh Yadav, Yuzvendra Chahal and Hardik Pandya scalped a wicket each.
Root and Morgan stablised the England innings in middle overs with a 103-run partnership for the third wicket.
Morgan produced a steady innings, scoring 53 runs off 51 deliveries as England inched towards the 200-run mark.
Once again, it was Kuldeep who gave the third blow to the hosts, sending back the England skipper in the 31st over, with the scorecard reading 189/3.
Morgan’s knock was laced with four boundaries and a six.
Ben Stokes’s (5) stay at the crease was short lived as Hardik Pandya struck to scalp the all-rounder’s wicket while Umesh and Chahal too, joined the party, dismissing Jos Buttler (4), Moeen Ali (13) respectively.
Despite losing three wickets with the addition of another 50 runs, Root kept England’s scorecard ticking as he forged a 83-run partnership with David Willey.
Willey produced a quickfire innings, smashing 50 runs off 31 balls before being stumped in the final ball of England’s innings.
England: 322/7 in 50 overs (Joe Root 113 not out, Eoin Morgan 53, David Willey 50; Kuldeep Yadav 3/68) vs India: 236 in 50 overs (Suresh Raina 46, Virat Kohli 45; Liam Plunkett 4/46).