91³Ô¹ÏÍø

Watch CBS News

Derrick White scores season-high 33, hits nine 3s as Celtics pull away from Heat 129-116

By KYLE HIGHTOWER `AP Sports Writer

Derrick White scored a season-high 33 points and tied a career-high with nine 3-pointers to help the Boston Celtics pull away in the second half for a 129-116 win over the Miami Heat on Friday night. 

Jaylen Brown added 30 points, nine rebounds and seven assists to help the Celtics snap a two-game losing skid. Anfernee Simons finished with 14 points. 

The Celtics took control in the fourth quarter, using a 20-7 run to open a 112-96 lead. It grew to 19 points. Boston connected on 21 3-pointers on the night. 

Kel'el Ware had 24 points and 14 rebounds for Miami, which has lost six of its last seven. Norman Powell added 18 points. Bam Adebayo finished with 16 points and 10 rebounds. 

The Heat had 102 field goal attempts and connected on 19 3s but shot just 39% from the field overall. 

Miami dropped to 5-9 on the road this season. 

Rookie Kasparas Jakucionis added 17 and had five 3-pointers in his first career start. 

Miami had only 10 players available with Tyler Herro out for the fifth time in six games with a toe injury, and Andrew Wiggins (lower back pain), Nikola Jovic (elbow), Davion Mitchell (sprained left ankle) and Pelle Larsson (sprained left ankle) all sidelined as well. 

The game was tied 58-58 at halftime, with White leading all scorers with 19 points. 

The Heat stayed in the game thanks to 11 offensive rebounds in the half, which led to 17 second-chance points. But they had only seven second-chance points in the second half. 

Up next 

Heat: At Knicks on Sunday.
Celtics: At Raptors on Saturday.

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