The privately-owned bus was travelling through the hilly region of Passara when it went off the road and crashed as the driver swerved to avoid an oncoming truck at a narrow pass, police said.
Five of the dead passengers were women and eight were men, police said, while another 30 people sustained injuries.
Police spokesman Ajith Rohana said CCTV footage suggested the bus driver was negligent before the accident. An investigation was underway.
It was the worst bus crash since April 2005 when a driver tried to beat a train at a level crossing at the north-western town of Polgahawela. The bus driver escaped with minor injuries, but 37 passengers were killed.
Sri Lanka records an average of 3,000 road fatalities annually making the island’s roads among the most dangerous in the world