Cheteshwar Pujara's gritty fifty helped India build on a 132-run first innings lead after Jonny Bairstow smashed his third consecutive hundred to lead England's fightback.