Dhawan (119) and KL Rahul (85) shared a solid partnership of 188 runs to better the highest opening stand against Sri Lanka in away Tests, going past the 173-run stand between Manoj Prabhakar and Navjot Sidhu in 1993.
Rahul missed yet another Test hundred, miscuing one straight to Dimuth Karunaratne at mid-on off left-arm spinner Malinda Pushpakumara (2/19) in the 40th over. His 135-ball knock had eight fours.
Dhawan though stayed and scored his second hundred of this series off 107 balls. He added 31 runs with Cheteshwar Pujara (8) but the latter did not look very comfortable at the crease despite good batting conditions.
Dhawan was caught at square leg, thanks to a leaping effort from skipper Dinesh Chandimal, a second dismissal against the run of play as he was just looking to cut loose with a flurry of boundaries.
Dhawan faced 123 balls in his knock and punished the home bowlers with 17 boundaries.
Pujara's discomfort at the crease came to an end as he was caught off Lakshan Sandakan (1/45) in the 51st over. He put on only 10 runs with Kohli as India were left to rebuild their innings despite being in a comfortable position.
Earlier, Dhawan, who scored at a brisk pace, and Rahul settled down quickly on an easy-paced wicket with true bounce.
Paceman Lahiru Kumara was very expensive in his first six overs, leaking 41 runs while Vishwa Fernando also could not keep the batsmen in check. So much so that Karunaratne had to be introduced early into the attack and was the best Lankan bowler on display in the morning session.
The opening duo brought up its 50-partnership off just 55 balls in the 10th over and kept up this pace of scoring to reach 100 off 107 balls in the 18th over.
They remained in control even when the hosts introduced spin into the attack in the form of Dilruwan Perera. Lakshan Sandakan also bowled two overs.
For Rahul, it was his seventh successive fifty in Test cricket overtaking Gundapppa Viswanath and Rahul Dravid (both with six half-centuries each).
India replaced the suspended Ravindra Jadeja with Kuldeep Yadav while Sri Lanka also included Chinaman Lakshan Sandakan in the team.
With Yadav and Sandakan featuring in the match, it is only the second time since 2004 when two 'chinaman' bowlers are playing in the same game after Dave Mohammed (West Indies) and Paul Adams (South Africa) at Cape Town.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)