Ryan Joyce prevailed in an epic World Grand Prix last 16 contest with Nathan Aspinall, who missed three match darts.