Philadelphia has lost six in a row to Arizona and 10 of 11 overall.
Daniel Descalso hit a go-ahead single in a four-run seventh inning.
Jorge De La Rosa (3-1) won in relief of Zack Godley, who struck out a career-high eight in 5 2/3 innings.
“He looked gross,” Lamb said of Godley. “That’s what he does. Nothing’s straight.”
Jerad Eickhoff pitched six strong innings for the Phillies, allowing one run on five hits, but remained winless this season. He has the worst run support among NL starters, the Phillies have tallied less than two runs in six of his 14 starts. The last Phillies starter to begin a season without a win in as many starts was Matt Beech in 1997.
Edubray Ramos (0-4) relieved Eickhoff and gave up the first three runs of Arizona’s four-run seventh.
Rey Fuentes led off with a single, and was safe at second when catcher Andrew Knapp failed to get him on De La Rosa’s sacrifice bunt. The play proved pivotal as Descalso followed with a tiebreaking single.
“I would’ve preferred he went to first but, hey, I’m not going to fault him for trying to be aggressive,” Phillies manager Pete Mackanin said. “I just think he should’ve went to first.”
“That was the catalyst of the big inning,” Diamondbacks manager Torey Lovullo said.
Goldschmidt’s double made it 4-1 and Brandon Drury added an RBI single.
The Phillies threatened in the bottom half, loading the bases with two outs for Michael Saunders. But Goldschmidt made an outstanding catch at first base, lunging toward the line on Saunders’ drive.
The catch was part of an all-around team effort.
“The guys on our team do a good job of getting themselves to play every day and we haven’t carried over wins or losses,” Goldschmidt said. “Everyone just shows up and takes care of their business. We’ve done a good job of showing up and no matter what happened the day before, good or bad, just kind of letting it go.”
Philadelphia left 13 runners on base.
The game was delayed 50 minutes at the start due to rain.