Tillis led Cunningham by more than 95,000 votes, or 1.76 percentage points.
The race was too early to call Tuesday, with votes till uncounted.
Cunningham lost despite outraising Tillis during what became the most expensive U.S. Senate race in U.S. history.
All together, the two campaigns and outside groups spent $282 million on the general election, according to the Center for Responsive Politics.
Tillis benefited from fallout over a Cunningham sex scandal in the campaign’s final month.
Tillis said Cunningham’s emphasis on his personal story in the campaign made the misconduct a defining issue.
Tillis was one of President Donald Trump’s strongest defenders during impeachment but was criticized by the GOP base last year when he initially took a stance opposite the president on how to fund the border wall.
Tillis later changed his mind.
Adapted from reporting by Associated Press.