Victory gave India their first away win in 16 Tests, a run stretching back to June 2011, and was just their second win in 17 Tests at Lord's.
England, set 319 to win, were bowled out for 223.
They lost six wickets for 50 runs either side of lunch as India paceman Ishant Sharma took a Test-best seven for 74.