The tourists steadily took top-order wickets in the first two sessions before taking the final five after tea.
Moeen Ali took 4-71 and Jack Leach 3-60, while Adil Rashid and Ben Stokes picked up a wicket each.
The win puts England 1-0 up in the three-match series and is their first in an overseas Test since October 2016.
Between them, England's three spinners took 16 wickets in the match, the second best return by English spinners in a Test since 1958.
A dominant performance from England over the first three days had left Sri Lanka needing to bat out the final two days to draw - or score a record 462 to win.
Beginning the day 15-0, the hosts survived the first hour unscathed but lost three quick wickets before lunch.
Angelo Mathews offered resistance with 53 but he chipped Moeen to mid-wicket shortly after tea as England closed in.
Rangana Herath - playing in his final Test - was the final wicket to fall, run out by Stokes.
The win is Joe Root's first as captain away from home and is England's first victory at Galle.
Spinners lead all-round attack
England's bowling attack has struggled for potency overseas in recent years but in Galle, Root was able to call on a variety of bowlers who all contributed.
Root started day four with seamers James Anderson and Sam Curran before turning quickly to spin when there continued to be no swing.
He first introduced left-arm spinner Leach, followed by off-spinner Moeen, and the pair removed the Sri Lanka openers, with Leach trapping Kaushal Silva lbw for 30 and Moeen catching Dimuth Karunaratne off his own bowling for 26.
All-rounder Ben Stokes has had a light workload with the ball in this Test but he dismissed Dhananjaya de Silva on the stroke of lunch and bowled a hostile spell after the interval.
He peppered Mathews and Kusal Mendis with excellent short bowling and should have had been rewarded with another wicket but Anderson dropped a simple catch from Mathews.
Leach bowled a long, accurate spell in the afternoon session and claimed the two wickets to fall, having Mendis caught at mid-off and bowling Sri Lanka captain Dinesh Chandimal with a brilliant spinning delivery.
Moeen then returned after tea and for the second time in the match took a wicket with the first ball of the final session, this time having Dhananjaya de Silva caught by Stokes at slip.
Shortly after Moeen saw off Mathews and leg-spinner Rashid claimed his first wicket of the innings by dismissing Dilruwan Perera for an aggressive 30, before the victory was sealed by the run-out of Herath.
Other than Root, who bowled one over on day four, every England bowler took a wicket in the match but it will be the spinners who pleased the England captain most.
Their combined 16 wickets is the second-best spinners' haul for England since 1958, behind only the 19 Graeme Swann and Monty Panesar shared in Mumbai in 2012.