Buttler combined with Ben Stokes in a fifth-wicket stand of 169 which allowed England to defy Jasprit Bumrah (five for 85) long enough to close on 311 for nine in notional pursuit of a world record 521 target in the third Specsavers Test.
Even after they were both done, Adil Rashid rode his luck to leave England merely on the brink after India managed only one of the two wickets they still needed in the extra half-hour.
Rashid was on his way back for a single when he was caught in the slips, only for Jasprit to be called for over-stepping, and was then dropped in the cordon by Virat Kohli on 20 in a ninth-wicket stand of 50 with Stuart Broad.
Jasprit finally had Broad caught in the slips anyway, but Rashid and No 11 James Anderson kept the tourists out in a bizarre non-conclusion.
Until then, the spotlight had fallen on England’s fifth-wicket pair Buttler (106) and Ben Stokes, who made 62 a week to the day after being acquitted of affray at Bristol Crown Court.
They appeared to face an impossible task when they joined forces without a run between them at 62 for four shortly before lunch.
Buttler’s first hundred – in his 38th Test innings, four years after his previous Test best of 85 on debut against the same opponents – was undoubtedly a breakthrough performance.
Stokes proved his mettle too as they put on 169 together.
Buttler had early fortune when, with just a single to his name, he edged Jasprit low but was dropped by a diving and wrong-footed Rishabh Pant behind the stumps.
Thereafter, he made few mistakes in a century which took 152 balls, yet contained 21 boundaries.
Stokes was a study in self-restraint, taking 48 deliveries to reach double-figures and 147 to complete his slowest Test 50.
Between them, they met varied challenges – of seam, swing, spin and reverse-swing – until Buttler finally succumbed to the second new ball.
With so much hard work banked and partially rewarded, Buttler paid for a marginal misjudgment against Bumrah – lbw, confirmed via umpire’s call on DRS, shouldering arms to one that cut back into him.
Jonny Bairstow, who had dropped down the order to allow Buttler’s promotion after breaking a finger keeping wicket the previous day, was then bowled for a golden duck as Bumrah put himself on a hat-trick. Four wickets fell for ten runs, Stokes’ the last to a KL Rahul catch at second slip off Hardik Pandya after 187 balls of skilful resistance.
But India’s rush up the home straight foundered against the England tail.
The hosts’ openers had come through nine murky overs after India’s declaration on the third evening, but were almost instantly unable to defy the odds on the resumption.
Keaton Jennings fell to the fifth ball of the morning when Ishant Sharma’s angle from round the wicket and natural movement away proved too much.
Fellow left-hander Alastair Cook went in near action replay in Ishant’s next over, getting a little thicker edge on the back foot to fence to second slip, where Rahul took the fourth of his seven catches in the match.
Joe Root and Ollie Pope, like Stokes and Buttler who followed, had to start without a run between them.
They got as far as a hard-working 62 for two before both falling without further addition in successive overs.
Root edged Jasprit to Rahul, safe again with a neat catch away to his right, and Pope’s response was to go after an expansive drive at Shami which ended only with Kohli’s head-high grab charging from third slip across second.