91³Ô¹ÏÍø

Watch CBS News

Angels botch popup in 9th, Yankees take advantage when Caballero's double gives them 5-4 win

José Caballero laced a two-run double in the bottom of the ninth inning that gave the New York Yankees a 5-4 victory over the Angels, moments after Los Angeles botched an infield popup in a costly misplay Wednesday night.

Aaron Judge hit his third homer of the series and Trent Grisham had a two-run single for the Yankees, who won for only the second time in eight games following an 8-2 start.

Mike Trout hit his fourth homer in three games, putting the Angels ahead 4-3 with a two-run drive in the fifth.

That was still the score when Jazz Chisholm Jr. popped up to the left side with one out and nobody on in the ninth. But shortstop Zach Neto and ex-Yankees third baseman Oswald Peraza miscommunicated, and the ball dropped right between them on the infield dirt for a gift single as Neto put his hands on his head.

That came back to bite the Angels, who had played outstanding defense all night to that point.

Austin Wells worked a full-count walk against closer Jordan Romano (0-2), and both runners were attempting to steal when Caballero lined a 1-2 slider into left-center.

Chisholm easily scored the tying run and third-base coach Luis Rojas aggressively waved Wells home. The catcher barely beat Neto's relay throw to the plate with a feetfirst slide, and the safe call was confirmed after a replay review.

It was the second blown save and loss in the series for Romano, who squandered a two-run lead in the ninth inning of Monday night's 11-10 defeat.

David Bednar (1-2) struck out two in a perfect inning for the win, helped by a fine defensive play at shortstop from Caballero.

Adam Frazier and Logan O'Hoppe each hit a solo homer off Yankees starter Luis Gil to help the Angels erase an early 3-0 deficit. It was the first home run at Yankee Stadium for O'Hoppe, who grew up about 45 miles away on Long Island.

Judge sent an opposite-field solo shot to right in the first for his seventh home run this season and fourth in four games.

Angels starter Jack Kochanowicz went 6 2/3 innings, allowing four hits and four walks with six strikeouts.

After the game, manager Aaron Boone said Yankees ace Gerrit Cole, coming back from Tommy John surgery, will make his first minor league rehab start Friday for Double-A Somerset.

Up next

Yankees ace Max Fried (2-0, 1.93 ERA) pitches Thursday afternoon in the finale of the four-game series. Los Angeles was undecided on a scheduled starter.

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(); } }); }); }); });