Cardinals top Cubs for season-best third win in row