It happened just before dawn around 7 a.m. along N.C. Highway 54 and Airport Boulevard in Morrisville.
The driver said the man was wearing dark clothing and could not be seen until the last second.
"His legs was all broke up and all skinned up pretty bad, and his head was busted open," said witness James Broadway. "Had a big ol' knot on top of it, but he was moving, he was conscious."
The man, whose name has not been released, was last listed in critical condition at a local hospital.