91³Ô¹ÏÍø

Watch CBS News

Neighbor describes "bomb-like" blast as he pulls woman from rubble after Lake Dallas home explosion

A Lake Dallas neighbor is describing the moments he pulled an injured woman from the wreckage of a home that exploded Thursday night, as investigators continue working to determine what caused the blast.

Jacob Sahl said he had just gotten home from work and was sitting on his couch when he heard a loud explosion around 7 p.m. in the 600 block of Moseley Street.

"It sounded like a bomb," Sahl said. "I go outside and I see my neighbor and I'm like, 'What happened?' and she's like, 'My neighbor's house blew up.'"

Sahl, who lives two houses away, ran toward the scene and said the home was already leveled.

As he and others approached, he said they heard someone crying from within the debris.

Sahl said they began moving debris, lifting doors and pieces of the roof, until they found the woman trapped inside. They pulled her out and dragged her to the street moments before the fire intensified.

"As soon as we got her to the street, the whole house just went," he said.

Sahl said the woman appeared to have serious injuries, including broken bones and burns, but was conscious and able to speak. He said they helped her contact family members before she was taken to the hospital. Her dog also made it out safely.

Authorities have not released an update on her condition as of Friday morning.

Investigation ongoing as neighbors describe chaotic scene

On Friday, the Texas Railroad Commission, the state agency that oversees natural gas pipeline safety, said it had inspectors on site, but had formally launched an investigation.

The National Transportation Safety Board, which investigated a deadly explosion in Northwest Dallas in 2018, said no decision had been made about an investigation.

Firefighters responded shortly after the explosion Thursday and expanded the perimeter, evacuating several nearby homes as a precaution.

Roads around Moseley Street remained closed Friday morning as crews continued to secure the area and investigate.

Officials have not confirmed the cause of the explosion, though natural gas is one of the possibilities being examined. Atmos Energy crews were assisting at the scene.

Atmos Energy said technicians worked throughout the night in coordination with the Lake Dallas Fire Department. Natural gas service to the area was turned off, and several homes were evacuated as a precaution, the company said.

Crews remained on scene Friday as the investigation continued.

Sahl said he did not initially smell gas, describing instead the odor of burning materials.

Others in the neighborhood also described a powerful blast that shook nearby homes and sent residents running outside to see what happened. One neighbor said, "It felt like an airplane hit my house."

The explosion comes just days after two separate natural gas line strikes elsewhere in Lake Dallas prompted evacuations and road closures near City Hall.

Atmos Energy has not confirmed any connection between those incidents and Thursday night's explosion.

The company said it responded around 7:45 p.m. and was working with fire crews and emergency officials as the investigation continues.

Officials are expected to examine whether natural gas played a role.

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