Freese hits grand slam, Cards hold off Brewers