ST. LOUIS (AP) Tyler O'Neill said it wasn't actually a promise. However, the St. Louis Cardinals' outfielder did tell cancer patient Preston Dobbs he ''would try'' and hit a home run for him.

O'Neill came through Saturday night with a two-run homer and a career high-tying four RBIs as the Cardinals beat the Arizona Diamondbacks 4-2.

His two-run double in the first inning gave the Cardinals a 2-0 lead. He added the homer off Merrill Kelly (7-9) in the third to push the advantage to 4-1.

O'Neill, born in Burnaby, British Columbia, Canada, met Dobbs before the game. A resident of the St. Louis suburb of Maryland Heights, Dobbs got to speak with several players before the contest thanks to the Make-A-Wish Foundation of Missouri.

The 11-year-old Dobbs' ability to keep fighting through the toughest of circumstances impressed O'Neill.

''I was able to put that ball in the air for Preston,'' O'Neill said. ''It was just a good feeling.''

O'Neill, recalled from Triple-A Memphis on June 29, also drove in four runs in a 6-0 win over Kansas City on May 21, 2018.

Dakota Hudson pitched six effective innings to help St. Louis break a three-game losing streak.

Eduardo Escobar hit his 19th homer for Arizona, which snapped a four-game win streak.

Hudson (8-4) gave up three hits and two runs in a 94-pitch stint. He struck out five and walked four. Hudson wriggled out of a bases-loaded no-out jam in the second after giving up a run-scoring hit to Nick Ahmed.

''When you're tested in uncomfortable situations, he figures out a way to bear down and execute,'' St. Louis manager Mike Shildt said. ''He gutted it up - did his part.''

Hudson struck out Jarrod Dyson and then got Ketel Marte to fly out to preserve the 2-1 lead.

''It was a day where I didn't have my best pitch and had to battle through it in order to get outs and keep us in position to win a good ball game,'' Hudson said. ''It's kind of how it was - we had to make adjustments early.''

Carlos Martinez got the last four outs for his fourth save in six chances.

Kelly surrendered just one earned run over five innings. A two-out error by third baseman Jake Lamb in the first allowed the inning to continue.

''I would like things to be a little smoother than it was,'' Kelly said. ''Sometimes that's just baseball. It was just kind of not my night.''

Ahmed has reached safely in a career-best 14 successive games.

St. Louis first baseman Paul Goldschmidt, who played eight seasons in Arizona (2011-2018), reached on the error by Lamb but went 0 for 3 at the plate and is hitless in seven at bats in the series.

Goldschmidt is hitting .249, the lowest average of his career at this point in the season.

TRAINER'S ROOM

Diamondbacks: RHP Jon Duplantier was scheduled to throw in an Arizona League game on Saturday. He has been sidelined since June 12 with right shoulder inflammation.

Cardinals: RHP Adam Wainwright will start on Sunday after missing a scheduled start on Friday with back spasms.

''I could have gone (Friday), but they said don't push it,'' Wainwright said. ''I was fine with it.''

RHP Miles Mikolas (5-9, 4.53 ERA), who was slated to start Sunday, will go on Monday.

UP NEXT

RHP Wainwright (5-7, 4.31 ERA) will face Arizona RHP Zack Greinke (10-3, 2.73) in the final of the three-game series on Sunday. Greinke won 10 games before the All-Star break for the fourth successive season. He has not allowed an earned run in three starts against NL Central opponents this season covering 20 2/3 innings.

---

More AP baseball coverage: www.apnews.com/MLB and www.twitter.com/AP-Sports

Copyright 2019 by STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.