The game belonged to Robbie Ray from the start. The left-hander held the Oakland Athletics to 2 hits over 8 innings, allowing 1 run — none earned — while striking out 6 and walking 4 on 102 pitches. It was the kind of outing that makes a close game feel comfortable, and San Francisco needed every bit of it, winning 3-1 at Oracle Park before 40,043 fans.
Ray improved to 6-6 with a 3.70 ERA. He worked through Oakland's lineup with enough command to keep the Athletics off the board for all but one inning, and when the bullpen was called on, Caleb Kilian closed it out with a clean ninth — 1 hit, 1 walk, 1 strikeout — for his fifth save of the season.
The scoring started in the second inning, when Jung Hoo Lee homered to right center, a 414-foot shot that gave San Francisco a 1-0 lead. Later in the same inning, Adames scored on a single by Matt Chapman, pushing the margin to 2-0. Lee finished 2-for-3 with a walk, 1 RBI, and 1 run scored, hitting .331 on the season with 5 home runs and 27 RBI. Oakland answered in the third, when Thomas scored on a single by Max Muncy to make it 2-1, but that would be the Athletics' only run of the night. San Francisco added an insurance run in the seventh when Eldridge scored on a single by Rafael Devers, making it 3-1.
Aaron Civale took the loss, falling to 5-4. He allowed 2 runs on 6 hits over 4 innings, striking out 5 without issuing a walk on 84 pitches. Oakland managed just 3 hits on the night and could not sustain any threat against Ray after the third inning.
San Francisco is now 31-46, having dropped three straight. Oakland fell to 38-40, extending its losing streak to two. Civale, who carries a 4.88 ERA, is 2 wins away from 50 career victories.