There is evidence of human activity in the Thornbury area in the Neolithic and Bronze ages, but Roman presence is limited to the Thornbury hoard of 11,460 Roman coins dating from 260 to 348 AD, which were found in 2004 while a resident was digging out for a fishpond. The earliest documented evidence of a village at "Thornbyrig" comes at the end of the ninth century. The Book noted a manor of "Turneberie" belonging to the Conqueror's consort Matilda of Flanders, with 103 residents.
St. Mary's church, begun in the twelfth century with later additions, is the oldest surviving building in the town. The town charter was granted in 1252 by Richard de Clare, Earl of Gloucester and Lord of the Manor of Thornbury. The charter's 750th anniversary in 2002 was celebrated with a "750" flower bed planted on Grovesend Road. The town grew around the site of its cattle market. Thornbury lost its status as a borough in the 19th century local government reforms, but in 1974 the parish council exercised its new right to designate itself a town council.
The ancient parish of Thornbury covered a large area, extending to the River Severn, and also included Rangeworthy, a detached part of the parish. In 1866 Rangeworthy became a separate civil parish. In 1894 the western part of the parish was separated to create the civil parish of Oldbury-on-Severn, and the eastern part of the parish was separated to create the civil parish of Falfield.
Thornbury was once served by a railway line; it was the terminus of a branch line of the Midland Railway (later part of the LMS), from Yate on the Bristol to Gloucester main line, with intermediate stations at Iron Acton and Tytherington. The branch lost its passenger services in June 1944 but lived on as a freight route, and also to serve quarries at Tytherington. The Thornbury railway station and line have been redeveloped into a supermarket, a housing estate, a bypass road and a long footpath. More remains of the line can be found at Tytherington quarry to the east of the town. There are plans to reopen the line to Yate via Tytherington and Iron Acton, and possibly run services to Gloucester and Bristol.
Thornbury had a market, held on the High Street and in the Market Hall. It moved to Rock Street in 1911 but closed down in the late 1990s and was partly replaced with a smaller market in a car park near the United Reformed Church. The older site has been redeveloped as a new community centre, called "Turnberrie's" the older community centre, at 'the Chantry', on Castle Street, remains in active use however. The Market Hall is now a clothes shop.
Thornbury's coat of arms combines the arms of four families important in the town's history: Attwells, Howard', Clare and Stafford. John Attwells left £500 in his will for the establishment of the Free School which merged with the grammar school in 1879. The Attwells coat of arms was later adopted as the badge for the grammar school, now Marlwood School. The other three families held the manor at Thornbury over several centuries. It has the motto Decus Sabrinae Vallis (Latin for "Jewel of the Severn Vale").