Edwards, who won his first NASCAR event of the year, led for 35 of the race's 50 laps but needed to fend off Villeneuve after a restart with nine laps remaining -- one of seven cautions in the road course event.
The final restart came after an incident involving Stanton Barrett and set up a three-lap shootout.
Villeneuve was running second to Edwards until he suffered engine failure on the final lap, winding up 25th. Canadian driver Ron Fellows took over second, finishing 4.3 seconds behind Edwards.
Brendan Gaughan finished third -- his best showing of the year -- and Nationwide points leader Brad Keselowski took fourth.
Owen Kelly of Australia, making his first Nationwide start, finished fifth.