But concerns over a falling rupee capped the appetite for the island nation's risky assets.
The main share index ended 0.05 percent, or 3.1 points, firmer at 5,985.45, recovering from its one-week closing low hit in the previous session.
Foreign investors bought net 349 million rupees ($2.65 million) in shares, extending the year-to-date offshore inflow to 16.84 billion rupees.
John Keells closed up 1.63 percent at 250 rupees.
Turnover was 665.2 million rupees ($5.05 million), bourse data showed, well below this year's daily average of around 962 million rupees.
The local currency hit a 10-month low in early trade due to importer demand for dollar.
($1 = 131.6000 Sri Lanka rupees)
(Reporting by Shihar Aneez and Ranga Sirilal; Editing by Subhranshu Sahu)