Skipper Virat Kohli cracked his second successive double century to compound Sri Lanka's misery as India took lunch on 500 for five on day two of the third Test on Sunday.
Kohli, batting on 225, was not in his element after starting the day on 156, battling a back problem while getting regular help from the physio.
But nevertheless Kohli combined with overnight partner Rohit Sharma, who scored 65, to put on 135 runs for the fifth wicket.
Sri Lanka got some relief when Sharma was caught behind off left-arm wrist spinner Lakshan Sandakan, who has picked three wickets so far, as lunch was taken.
But Kohli made sure that India capitalised on their brisk start after electing to bat first at Feroz Shah Kotla.
In-form Kohli, fresh from his 213 in India's thrashing of Sri Lanka in the second Test, pulled paceman Suranga Lakmal for a couple of runs to accomplish the feat as he raised his bat to the applauding crowd.
It was the star batsman's sixth 200 plus score in his glittering career of 63 matches - the first international captain to have these many doubles.
Sharma, who registered his eighth Test fifty, provided the perfect foil to his attacking captain as he kept rotating the strike and also hit two big sixes during his stay.
India lead the series 1-0 and need only a draw for a record-equalling ninth successive Test series triumph. England and Australia are the other sides to have achieved the feat.