diff --git a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
index 59e761246bb6e248154bfca62e4331e5f6d45bd9..39c4a771f57607eab037b5e99f04fa28e24e394b 100644
--- a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
+++ b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
@@ -9,6 +9,7 @@
 use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 use Drupal\Core\Serialization\Yaml;
 use Symfony\Component\DependencyInjection\Alias;
+use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
 use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
 use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -492,6 +493,11 @@ private function resolveServices(mixed $value): mixed
 
               return $argument;
             }
+
+            if ($value->getTag() === 'service_closure') {
+                return new ServiceClosureArgument($this->resolveServices($argument));
+            }
+
         }
         if (is_array($value)) {
             $value = array_map(array($this, 'resolveServices'), $value);
diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/YamlFileLoaderTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/YamlFileLoaderTest.php
index 56ed3e8894ed0433e3891648e8c90a04116cab4b..0fc5c0203e85c955a20a4604db33899345306d17 100644
--- a/core/tests/Drupal/Tests/Core/DependencyInjection/YamlFileLoaderTest.php
+++ b/core/tests/Drupal/Tests/Core/DependencyInjection/YamlFileLoaderTest.php
@@ -9,7 +9,9 @@
 use Drupal\Core\DependencyInjection\YamlFileLoader;
 use Drupal\Tests\UnitTestCase;
 use org\bovigo\vfs\vfsStream;
+use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
 use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
+use Symfony\Component\DependencyInjection\Reference;
 
 /**
  * @coversDefaultClass \Drupal\Core\DependencyInjection\YamlFileLoader
@@ -39,6 +41,9 @@ class: \Drupal\Core\ExampleClass
   example_tagged_iterator:
     class: \Drupal\Core\ExampleClass
     arguments: [!tagged_iterator foo.bar]"
+  example_service_closure:
+    class: \Drupal\Core\ExampleClass
+    arguments: [!service_closure '@example_service_1']"
 YAML;
 
     vfsStream::setup('drupal', NULL, [
@@ -63,6 +68,13 @@ class: \Drupal\Core\ExampleClass
     $this->assertTrue($builder->has('Drupal\Core\ExampleClass'));
     $this->assertSame('Drupal\Core\ExampleClass', $builder->getDefinition('Drupal\Core\ExampleClass')->getClass());
     $this->assertInstanceOf(TaggedIteratorArgument::class, $builder->getDefinition('example_tagged_iterator')->getArgument(0));
+
+    // Test service closures.
+    $service_closure = $builder->getDefinition('example_service_closure')->getArgument(0);
+    $this->assertInstanceOf(ServiceClosureArgument::class, $service_closure);
+    $ref = $service_closure->getValues()[0];
+    $this->assertInstanceOf(Reference::class, $ref);
+    $this->assertEquals('example_service_1', $ref);
   }
 
   /**