The Arizona starter allowed only one run and three hits but walked four, threw 96 pitches and lasted only five innings Saturday night. The Diamondbacks' five-game winning streak ended with a 3-1 loss to the Philadelphia Phillies.
"I don't know if it's a mechanical thing or a mental thing," Cahill said. "Some games I can throw it consistently and some games I can't."
Cahill needed only 11 pitches to retire the Phillies in the first inning and another 16 in the second. But from then on he worked into deeper counts, even with catcher Miguel Montero tried to make adjustments.
"After the first or second I kind of lost command of the sinker," Cahill said. "He started calling more offspeed stuff because he knew I could command that."
"I don't know why it's so inconsistent. It's like one game I feel like I have command of it, then the next start I don't even throw it."
Cahill (2-4) has spent the season pitching with a relatively small margin of error thanks to paltry offensive support. The Diamondbacks have scored 22 runs in his seven starts, nine coming in a 9-2 win over the Los Angeles Dodgers on May 6.
"We had a chance to win tonight but things didn't go our way," Arizona manager Kirk Gibson said. "Any runs that they tacked on, you know it's going to make it tougher on yourself.
Cliff Lee (4-2) also has been the recipient of precious few runs. Philadelphia had been shut out in two of his past starts and the Phillies have scored 23 runs total in his seven starts—eight coming in one game.
Against the Diamondbacks, he pitched in himself offensively, contributing to the Phillies' first two runs with two of his three sacrifice bunts.
Lee gave up six hits over seven scoreless innings, struck out three and walked two in winning consecutive road starts for the first time since August 2011.
The Diamondbacks threatened against Lee only once, loading the bases with two outs in the seventh while trailing 2-0 before Wil Nieves grounded out.
Jimmy Rollins had two hits and drove in two runs. Domonic Brown added an RBI single in the seventh for the Phillies, who snapped a three-game losing streak.
Jonathan Papelbon pitched the final 1 2-3 innings for his sixth save in as many chances.
The Diamondbacks put runners on second and third against Papelbon with one out in the ninth. He struck out pinch-hitter Eric Hinske and A.J. Pollock for his first five-out save since July 14, 2012, at Colorado. Pollock had doubled twice earlier.
The Phillies manufactured a run to take a 1-0 lead in the fifth. Ben Revere walked, was sacrificed to second by Lee, went to third on a wild pitch and scored on a sacrifice fly to deep center by Rollins.
Philadelphia made it 2-0 in the seventh when Revere singled off Josh Collmenter, stole second, moved up on Lee's third bunt and scored when Rollins singled.
Michael Young walked and later scored on Brown's single against Tony Sipp in the eighth to extend the Phillies' lead to 3-0.
Cody Ross hit a sacrifice fly in the Arizona eighth.
NOTES: Diamondbacks RHP Matt Reynolds notched his 22nd scoreless appearance dating back to last season. He matched a franchise record with his 19th straight scoreless outing to start the season, first set by Joe Paterson in 2011. ... Pollock leads the NL with 14 doubles. ... Lee helped his cause in the third when he picked off Pollock at second base. ... Diamondbacks LHP Daniel Hudson, who is working his way back from Tommy John surgery last July, threw 46 pitches over three innings of a simulated game earlier Saturday. ... Arizona OF Adam Eaton has been transferred to Visalia of the Class A California League to continue his rehab from a left elbow strain. ... Phillies RHP Kyle Kendrick will start the series finale Sunday against Diamondbacks RHP Brandon McCarthy, who is looking for his first win since signing with Arizona in the offseason.