The victory was the first for the four-time truck series champion in 17 career starts on the 0.526-mile oval, and left him with tears in his eyes when he climbed from his truck.
"This is unbelievable. I won at Martinsville fair and square," he said.
The victory is his series-high 47th in the series, but just second this season.
Busch held on for second, and a grieving Todd Bodine was third. Bodine, the points leader, was racing hours after the death of his mother, and led much of the second half of the race.
Busch passed him with 25 laps to go in regulation, and Hornaday followed.
"It was a tough day for me," Bodine said, speaking slowly and choking back tears. "I was good until coming down pit road, you know, and I know they were up there watching."
He said staying to race after his mother died overnight proved a good move.
"I couldn't walk 10 feet through the garage area today without somebody stopping me and hugging me, and that means more than anything," he said. "You know, having good friends is important. That's what life is about, family and friends."
Busch held off Hornaday through one restart, but on another with five laps to go in regulation, Hornaday went around Busch on the outside of the 197th circuit before another caution came out. That sent the race to the two-lap dash to the finish.
Hornaday made it look easy, pulling away immediately and cruising to the victory.
The race included a lot of banging and sheet metal damage, with 11 cautions that slowed it for 59 laps, and a red flag that stopped it for just over eight minutes for a cleanup.
"I don't necessarily call that racing. I call it mayhem, I guess," Busch said.
Hornaday said it took so long to get the victory at Martinsville for reasons that include often racing against his team owner, Kevin Harvick.
"He's the boss, signs my check," Hornaday said. He added that he warned Harvick before the race that "you better not be leading on the last lap because I will have to move you."