Roanoke County is located in the southernmost end of the Shenandoah Valley, between the Allegheny and Blue Ridge Mountains. It is nearly hexagonal in shape, with a land area of approximately 250 square miles. Dividing the county is a northeast-to-southwest valley.

The mean width of the Roanoke Valley is between 7 and 8 miles and its elevation ranges from 900 feet above sea level on the valley floor to about 3,900 feet on Poor Mountain in the southwestern part of the county.

The Roanoke Valley is surrounded by mountain ranges.


Catawba Mountain is to the north. It has a peak, called McAfee's Knob, at an elevation of 3,197 feet above sea level.


To the northeast are the Tinker and Read Mountains.


To the east is the Blue Ridge. Weaver and Stewart Knobs are at an elevation of 2,400 feet.


The Blue Ridge is also to the south. It has a peak called Mason's Knob, which is at an elevation of 3,217 feet and is on the border with Franklin County.


To the southwest are Poor Mountain, which has an elevation of 2,707 feet at Twelve o'clock Knob; Bent Mountain at an elevation of 3,202 feet; and Sugar Loaf Mountain.


Fort Lewis Mountain is to the west. It has a peak at an elevation of 3,280 feet. It extends northward to the northwest boundary of Salem.


The Roanoke River originates in the Blue Ridge Mountains, flowing east through the middle of Roanoke County, draining into Smith Mountain Lake in Bedford County and continuing into North Carolina, ultimately reaching the Albemarle Sound. The Roanoke River Valley drainage system serves the cities of Roanoke and Salem and most of Roanoke County, with a small area in the northern part of the county drained instead by Catawba Creek, which is part of the James River drainage system that drains into the Chesapeake Bay.