Stephen Piscotty hit a two-run homer, rookie Jack Flaherty threw five innings of one-run ball and the streaking St. Louis Cardinals beat the San Diego Padres 3-1 on Wednesday night.

St. Louis has won four straight and six of seven. Piscotty hit his ninth homer in the seventh - only the Cardinals' third hit to that point - and St. Louis tacked on an unearned run in the eighth on Harrison Bader's sacrifice fly.

Three Cardinals relievers blanked the Padres over four innings, with Tyler Lyons pitching a wobbly ninth for his second save. The Padres had the tying runs aboard with no outs before Lyons retired three straight. Ryan Sherriff (1-1) got the win.

Dinelson Lamet (7-7), who lost a pitching duel to the Dodgers' Clayton Kershaw in his previous outing, stymied the Cardinals through six innings, giving up just one hit. Then Jose Martinez led off the seventh with a sharp single, and Piscotty followed with his two-run blast. When Lamet then walked Greg Garcia, his night was done and he was charged with two runs and four walks. He struck out eight.