Dhoni in action on Sunday.
Zaheer Khan and Praveen Kumar demolished Sri Lanka's top order with four early wickets as India chalked up a 33-run victory in the third one-day international on Sunday.
Chasing India's total of 237 for nine, the hosts were plunged into early trouble for the second game running as Zaheer (three for 23) and Praveen (two for 62) produced a stunning new-ball spell.
Sri Lanka's hopes were all but dashed when they were 40 for four and although captain Mahela Jayawardene contributed a valiant 94, his team's early collapse proved too much to overcome as they were eventually bowled out for 204.
It was the second game running the home side's top order had failed, after they were 75 for five in their three-wicket defeat in Dambulla on Wednesday, and leaves India leading the five-match series 2-1.
India skipper Mahendra Singh Dhoni had laid the foundation for the victory by winning a crucial toss and then top-scoring with 76.
Suresh Raina (53) and Rohit Sharma (32) chipped in with useful contributions as India, 91 for four at one stage, reached a competitive score of 237 for nine.
Jayawardene had reckoned at the toss that his team could successfully chase a score of 250, but his plans went awry when Zaheer and Praveen struck in tandem.
Praveen first snared Sanath Jayasuriya (13), getting the dangerous left-handed opening batsman to miscue a cut shot to Dhoni.
Kumar Sangakkara (nine) was trapped leg before wicket by Zaheer, who also got rid of Chamara Silva (one) in similar fashion with a delivery that nipped back.
Praveen picked up his second wicket when he had Chamara Kapugedera (12) adjudged lbw, two deliveries after the 21-year-old right-hander had dispatched him over the mid-wicket fence.
Tillakaratne Dilshan (16) started off in belligerent fashion, hitting Praveen for consecutive boundaries in the 11th over.
But he was soon sent back, edging a Munaf Patel delivery to Dhoni.
Jayawardene and Thushara then came together and mounted pressure on India with an 81-runs stand for the eighth wicket.
But Zaheer returned to the attack to end the home resistence, bowling Thushara (30) with a yorker length delivery.
Munaf (three for 42) then claimed the key wicket of a tired-looking Jayawardene, who miscued a paddle sweep to Praveen at short fine leg.
Earlier, India had seemed to have squandered a fine start from Virat Kohli (25) and Gautam Gambhir (eight) as they dropped to 91 for four.
Kohli was the dominant partner in a 39-run stand for the opening wicket.
But Kohli pushed a delivery straight to Silva at mid-off and set off for a single, only to be caught well outside his crease when Silva hit the stumps with a direct throw.
Gambhir was very nearly run out off the first ball he faced and had steered another delivery just short of Jayawardene at first slip before he settled at the crease.
But he departed shortly after when umpire Tyron Wijewardene adjudged him lbw off a Nuwan Kulasekara delivery.
Yuvraj Singh (12) steered a delivery from Kulasekara straight to Jayawardene at first slip and Subramaniam Badrinath (six) also departed cheaply while attempting to force the pace.
But Raina and Dhoni hauled India back as they rebuilt the innings with a 54-run stand for the fifth wicket.
Raina smacked four boundaries and a six during his 80-delivery stay at the crease before he was another run-out victim, Dilshan and Sangakkara combining to send him back for 53.
Rohit Sharma (32) chipped in with a cameo towards the end as India sailed over the 200-run mark.
Spinner Ajantha Mendis, who had conceded 55 runs in his first nine overs, bowled a tight final over to pick up wickets of Dhoni and Harbhajan Singh (two) to finish with a haul of three for 56.