Sri Lanka were cruising at one stage, reaching 145 for one in chase of 261 but chinaman Yadav picked three wickets in a single over to diffuse their challenge.
Chahal took four wickets, including that of opener Upal Tharanga (47), as India hammered Sri Lanka by 88 runs to take an unassailable 2-0 lead in the three-match series.
"They are bowling really well and generally the wrist- spinners with their variations are hard to pick. But this wicket offered very little for the bowlers and was excellent for batting and we could have done better," Perera said at the post match press conference.
Yadav dismissed Kusal, captain Thisara Perera and Asela Gunaratne in the 15th over to end Sri Lankan hopes.
More From This Section
"Kuldeep took three wickets in an over. The momentum went away from us at that moment and we never recovered," Perera lamented.
Asked if they made a mistake by asking India to bat first, Perera defended the decision.
"We have to back our strengths. We have good batsmen, but Rohit and KL Rahul were brilliant with that partnership. We tried to back ourselves and play to our best when batting, but it didn't go our way," he said.
Talking about his own explosive innings on comeback, Perera said, "I backed myself. It was very pleasing to get going after a long injury lay off. I believe in my ability.
"However, your individual performances don't matter and you have to think of the team winning and that's what counts.