The main share index ended 0.93 percent, or 55.61 points, firmer at 6,041.06, its highest closing since July 11.
Foreign investors sold net 184 million rupees ($1.40 million) in shares. But the bourse has seen a net inflow of 16.65 billion rupees year-to-date.
John Keells closed up 4.16 percent at 260.10 rupees.
Turnover was 719.1 million rupees ($5.46 million), bourse data showed, well below this year's daily average of around 960 million rupees.
($1 = 131.7000 Sri Lanka rupees)
(Reporting by Shihar Aneez and Ranga Sirilal; Editing by Subhranshu Sahu)