Sanath Jayasuriya hit a fighting 125 to help Sri Lanka post a decent 273 in their 50 overs on a flat National Stadium pitch. Mendis, playing for the first time against India since making his debut in April this year, bowled eight overs of beguiling spin to beat his previous best of 5-22 against United Arab Emirates in the first round last week.
He also bettered the best bowling figures in Asia Cup history, erasing the 5-19 record set by Aaqib Javed for Pakistan against India at Sharjah in 1995. The spinner from Moratuwa finished with 17 wickets in the batsman-dominated tournament.
India got off to a rapid start, reaching 36 by the fifth over when Gautum Gambhir (6) was caught in the covers of Chaminda Vaas. Mendis came into bowl the 10th over with Sehwag (60) dealing only in boundaries. Off his second ball, Mendis lured the Indian opener and had him stumped.
Sehwag hit 12 boundaries during his 36-ball knock.
Two balls later, Mendis beguiled Yuvraj Singh with a straighter delivery to bowl him without scoring and in his third over bowled Suresh Raina (16) with another peach to leave India at 93-4. In his fourth over, Mendis trapped Rohit Sharma (three) with another one that skidded before spinning partner Muttiah Muralitharan ended a resolute 35-run stand between Dhoni and Robin Uthappa (20).
Mendis returned for his second spell to remove Irfan Pathan (two) and Rudra Pratap Singh (nought) off successive deliveries before Vaas returned for his third spell to dismiss Dhoni's resistance packed 74-ball deliveries.
Earlier, Jayasuriya hit his 27th one-day hundred to become the second highest century-maker in one-day cricket behind India's Sachin Tendulkar, who has 42.
The 39-year-old, recalled for this tournament after being dropped for the West Indies tour in April, added an invaluable 131 runs for the fifth wicket with Tillakaratne Dilshan (56) after paceman Ishant Sharma made early inroads.
The 19-year-old Sharma dismissed Mahela Jayawardene (11), Chamara Kapugedera (five) and Chamara Silva (0) in an incisive seven over spell after Sri Lanka lost opener Kumar Sangakkara run out for four in only the second over.
Jayasuriya took up the fight, with impressive hitting that included nine boundaries and five sixes during his 114-ball knock. He clouted Sharma over mid-wicket boundary to bring up his half-century off 43 balls and then cut loose, hitting paceman Rudra Pratap Singh for three sixes and two boundaries to take 26 in an over. He flicked off-spinner Virendar Sehwag for a single to reach 100 off 79-balls.
He was finally dismissed after sweeping Sehwag straight into the hands of the mid-wicket fielder. Dilshan smashed all of his three boundaries in one Irfan Pathan over before the paceman dismissed him in the 39th over. Sharma finished with 3-52 while Singh took 3-67.