SR 49 begins at the North Carolina state line in the town of Virgilina in southeastern Halifax County. The state highway is concurrent with SR 96 on Florence Avenue. The two highways continue into North Carolina as NC 49 and NC 96, which then split and head toward Roxboro and Oxford, respectively. The two highways cross over the old railroad grade of the Norfolk, Franklin and Danville Railway then intersect Seventh Street. SR 96 turns west toward US 501, which leads to South Boston and Halifax, the county seat of Halifax County. SR 49 turns east onto Seventh Street, leaving the town and becoming Clarksville Road, which closely parallels the state line for a short distance before veering northeast and entering Mecklenburg County after crossing Aarons Creek, which flows north into the Dan River. The state highway passes through the hamlets of Nelson and Buffalo Junction before reaching US 58.