According to the United States Census Bureau, the town has a total area of 55.83 square miles (144.60 km2), of which, 55.00 square miles (142.45 km2) of it is land and 0.83 square miles (2.15 km2) is water.   Lebanon is drained by the Little River and Salmon Falls River.

The town is crossed by U.S. Route 202 and State Route 11. It borders the towns of Acton to the north, Sanford to the east, Berwick and North Berwick to the southeast, and the New Hampshire towns of Milton and Rochester to the west.