91³Ô¹ÏÍø

Watch CBS News

Jeffrey Springs takes no-hitter into seventh, combines on 1-hitter as A's beat Yankees 1-0

Jeffrey Springs took a no-hit bid into the seventh inning and combined with two relievers on a one-hitter, and the Athletics beat the New York Yankees 1-0 Thursday afternoon to clinch their first series at Yankee Stadium since 2016.

Springs (2-0) lost his no-hitter on his 84th pitch when Ben Rice hit a single to right field following a walk to Giancarlo Stanton. Springs kept the Yankees scoreless by retiring Austin Wells and Randal Grichuk.

Springs allowed only Rice's hit in seven innings. The left-hander struck out six, walked two and permitted four base runners.

The Yankees have only two hits in their last 17 innings and have not scored since getting two runs in the first inning of Wednesday's 3-2 loss off Luis Severino.

After Springs exited Thursday, Justin Sterner retired Aaron Judge on a groundout with a runner on first to end the eighth. Hogan Harris pitched a 1-2-3 ninth for his fifth career save and first this season.

The A's allowed one hit for the first time since April 15, 2024, at Texas. The Yankees were held to one hit for the first since Aug. 15, 2023, at Atlanta.

The game was scoreless until Max Muncy scored on a single by Tyler Soderstrom off Ryan Weathers after opening the seventh with a triple off the center field fence.

New York had three at-bats with a runner in scoring position.

Weathers allowed one run and seven hits in seven innings. The left-hander struck out seven, walked none and threw a career-high 101 pitches.

It was the 12th start to open the season that a New York starter allowed three runs or fewer.

The Athletics lost Brent Rooker to back pain after he was injured on a swing in the first inning.

Up Next

Athletics: Open a three-game series at Citi Field against the Mets on Friday. The A's did not name a starter and will face New York RHP Clay Holmes (2-0, 1.42 ERA).

Yankees: Luis Gil makes his season debut Friday against Tampa Bay LHP Steven Matz (2-0, 4.09) in the opener of a three-game series at Tropicana Field.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });