91³Ô¹ÏÍø

Watch CBS News

Warriors beat Suns 109-105 as Jonathan Kuminga ties career high with 34 points

Jonathan Kuminga had 34 points and made the go-ahead free throw in the Golden State Warriors' 109-105 win over the Phoenix Suns on Saturday.

With the Warriors down one, Kuminga was fouled after getting inside positioning on Kevin Durant on an out-of-bounds play with 29 seconds to go. Kuminga made both free throws to put Golden State ahead and tie his career high in points a day after setting it against the Clippers on Friday.

Durant, who led the Suns with 31 points, missed a shot on the other end, and Dennis Schroder made two free throws after the Suns committed a loose ball foul on the rebound.

Phoenix led 65-61 at halftime. Stephen Curry, who had 22 points, beat the first-half buzzer with a one-handed, off-balance floater over seven-footer Oso Ighodaro after going behind the back to split two defenders.

The Suns were without Jusuf Nurkic, who was serving the first of a three-game suspension for his role in a fight against the Mavericks on Friday. Royce O'Neale also left the game in the second quarter with a left ankle sprain.

Warriors guard Brandin Podziemski (lower abdominal strain) did not play in the second half.

Takeaways

Suns: The Suns have lost five of six and are under .500 for the first time this season after an 8-1 start.

Warriors: The Warriors picked up a much-needed win to start a six-game homestand after losing six of seven.

Key moment

The Warriors held the Suns without a field goal in the final 6:48, keying their fourth-quarter comeback.

Key stat

The Warriors played in their league-leading 21st clutch game of the season, improving to 9-12 in games that were within five points in the last five minutes. Eight of their last nine games have been clutch games.

Up next

The Warriors host the Cavaliers on Monday, while the Suns host the Grizzlies on Tuesday.

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });