Chasing 405, England lost wickets at frequent intervals on the fifth and final day to end their second innings at 158.
Rookie off-spinner Jayant Yadav enjoyed a memorable Test debut with figures of 3-30 while star off-spinner Ravichandran Ashwin also bagged three wickets.
Fast bowler Mohammed Shami and left-arm pacer Ravindra Jadeja claimed two wickets each.
England skipper Alistair Cook top scored for his team with 54 runs.
Jonny Bairstow remained unbeaten on 34.
India captain Virat Kohli, who has been in excellent form with the bat in recent times, was adjudged the Man of the Match.
Kohli had scored 167 runs in the first innings and 81 in the second.
Ashwin was the most successful among the Indian bowlers with a total of eight wickets in the match.
Resuming at the overnight score of 87/2, England lost Ben Duckett in only the sixth over of the day.
The left-hander went for a sweep off an Ashwin delivery but was outfoxed by the extra bounce as the ball looped up for an easy catch to wicketkeeper Wriddhiman Saha.
Duckett's dismissal triggered a middle-order collapse for England.
Moeen Ali was the next to go, defending patiently to score a mere two runs off 31 balls before Jadeja induced an edge to Virat Kohli at backward short leg.
Ben Stokes joined Root in the middle and continued with the English strategy of adopting an overtly defensive strategy in a desperate bid to stave off defeat.
He battled for 33 deliveries for his six runs but Jayant Yadav put an end to his innings with a delivery that turned in sharply after pitching and beat the outside edge before crashing into the stumps.
England suffered another crucial in the very next over when Joe Root also went back to the pavilion.
Root, who lasted 107 deliveries for his 25 runs, was trapped leg before by an inswinger from Shami.
Shami also dismissed Adil Rashid with a short-pitched delivery just before lunch and an Indian win was only a matter of time from there.
The third Test begins at Mohali on November 26.