The Colombo Stock Exchange's main index rose 0.65 percent, or 36.22 points, to close at 5,607.13, its highest since Oct. 19.
Foreign buying accounted for 68 percent of turnover and offshore investors bought a net 619.5 million rupees worth of shares, extending net foreign buying this year to 38.52 billion rupees.
Trading in John Keells Holdings, which gained 0.87 percent to 219.9 rupees, accounted for 67.6 percent of turnover.
"Foreigners bought Keells and we see some positive sentiment locally with retail investors buying some speculative shares after the recent fall in fixed deposit yields," a stockbroker said on condition of anonymity.
Treasury bill yields eased by between 21 and 49 basis points at a weekly auction on Monday in line with a surprise cut in interest rates earlier this month.
The day's turnover stood at 930.6 million rupees ($7.33 million), compared to this year's daily average of 886 million rupees.
The rupee closed steady at 127.00/10 to the dollar for a third session in dull trade, currency dealers said.
($1 = 127 rupees) (Reporting by Shihar Aneez; Editing by Nick Macfie)