Adam Duvall hit a three-run shot in the 10th inning to lead the Boston Red Sox to a 7-5 victory over the Houston Astros.