Originally, NC 21 began at the South Carolina state line west of Fair Bluff.
The highway travelled north connecting Lumberton, Fayetteville, and Lillington before ending in Raleigh.
The highway ran 33 miles (53 km) to the northwest to Elizabethtown, largely paralleling the Cape Fear River north of Acme.
From NC 201, the highway continued north for 30 miles (48 km) through Tarheel to Fayetteville.
The US 401/US 421/NC 21/NC 60/NC 210 concurrency crossed the Cape Fear River and the highways split at an intersection north of the bridge.
From the intersection US 401/NC 21 continued north, entering Wake County near Fuquay Springs.