But while the Yorkshireman deserved to reach three figures, his despair will surely be tempered by the sight of Woakes reaching his first Test century at the home of cricket, becoming only the seventh Englishman to be on both honors boards at Lord's.
Warwickshire favourite Woakes, recalled after England omitted Ben Stokes because of a clash with his fellow pace-bowling all-rounder's trial for affray, had missed the hosts' 31-run win in the first Test at his Edgbaston home ground last week because of fitness concerns following knee and calf injuries.
Kohli, who was looking all at sea against Woakes, finally fell to the right-armer in his third over, with Jos Buttler making no mistake this time at second slip.
Unfortunately for the tourists Buttler got 24 off 35 balls - quick scoring on this wicket - before he was LBW off Shami (three for 67).
Jonny Bairstow and Chris Woakes celebrate their partnership on the third day of the second Test at Lord's between England and India.
Thereafter, wickets began to fall in heaps with Hardik Pandya (10) falling to Woakes before left-armer Sam Curran took Dinesh Karthik's (1) stumps for a ride.
Chris Woakes gave Bairstow fine support as England stretched their lead.
But it was new-ball partner Mohammed Shami who made the breakthrough when Keaton Jennings (11) was lbw playing across the line. As so often happens they did not have to wait long fir the second wicket, Alastair Cook caught behind for 21 off Ishant Sharma (one for 26) to leave England on 32 for two. It took the Surrey right-hander just two balls to score his first Test runs when he flicked a Sharma inswinger behind square-leg for four.
In a day deeply affected by the weather, England cashed in on conditions and put India's batsmen to the sword.
Off-spinner Ravichandran Ashwin (29) then joined Rahane in the middle to add 22 runs for the seventh wicket before the old warhorse James Anderson came back to add more misery to the visitors with the dismissal of the Mumbai batsman.