diff --git a/inline_all_css.services.yml b/inline_all_css.services.yml
index 2401eb0..98c0fad 100644
--- a/inline_all_css.services.yml
+++ b/inline_all_css.services.yml
@@ -11,6 +11,7 @@ services:
       - '@event_dispatcher'
       - '@http_client'
       - '@logger.factory'
+      - '@http_kernel.basic'
 
   inline_all_css_minify_subscriber:
     class: Drupal\inline_all_css\EventSubscriber\MinifySubscriber
diff --git a/src/Asset/CriticalCssCollectionRenderer.php b/src/Asset/CriticalCssCollectionRenderer.php
index 439e3d8..ba97696 100644
--- a/src/Asset/CriticalCssCollectionRenderer.php
+++ b/src/Asset/CriticalCssCollectionRenderer.php
@@ -12,6 +12,8 @@ use Drupal\Core\Url;
 use Drupal\inline_all_css\Event\CssPreRenderEvent;
 use GuzzleHttp\ClientInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
 use function file_get_contents;
 
 /**
@@ -70,6 +72,13 @@ class CriticalCssCollectionRenderer implements AssetCollectionRendererInterface
    */
   protected $logger;
 
+  /**
+   * The http kernel service.
+   *
+   * @var \Symfony\Component\HttpKernel\HttpKernelInterface
+   */
+  protected $httpKernel;
+
   /**
    * Constructs a CriticalCssCollectionRenderer.
    *
@@ -87,8 +96,10 @@ class CriticalCssCollectionRenderer implements AssetCollectionRendererInterface
    *   The http client service.
    * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_channel_factory
    *   The logger channel factory service.
+   * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
+   *   The http kernel service.
    */
-  public function __construct(AssetCollectionRendererInterface $css_collection_renderer, ConfigFactoryInterface $config_factory, ThemeManagerInterface $theme_manager, FileSystemInterface $file_system, EventDispatcherInterface $event_dispatcher, ClientInterface $http_client, LoggerChannelFactoryInterface $logger_channel_factory) {
+  public function __construct(AssetCollectionRendererInterface $css_collection_renderer, ConfigFactoryInterface $config_factory, ThemeManagerInterface $theme_manager, FileSystemInterface $file_system, EventDispatcherInterface $event_dispatcher, ClientInterface $http_client, LoggerChannelFactoryInterface $logger_channel_factory, HttpKernelInterface $http_kernel) {
     $this->cssCollectionRenderer = $css_collection_renderer;
     $this->config = $config_factory->get('inline_all_css.settings');
     $this->themeManager = $theme_manager;
@@ -96,6 +107,7 @@ class CriticalCssCollectionRenderer implements AssetCollectionRendererInterface
     $this->eventDispatcher = $event_dispatcher;
     $this->httpClient = $http_client;
     $this->logger = $logger_channel_factory->get('inline_all_css');
+    $this->httpKernel = $http_kernel;
   }
 
   /**
@@ -111,8 +123,15 @@ class CriticalCssCollectionRenderer implements AssetCollectionRendererInterface
     $css = '';
     foreach ($assets as $asset) {
       if ($asset['type'] === 'file') {
-        $file = $this->fileSystem->realpath($asset['data']);
-        $css .= file_get_contents($file);
+        if (version_compare(\Drupal::VERSION, '10.1', '>=')) {
+          // Since Drupal 10, assets are lazily constructed.
+          $sub_request = Request::create($asset['data']);
+          $css .= $this->httpKernel->handle($sub_request, HttpKernelInterface::SUB_REQUEST)->getContent();
+        }
+        else {
+          $file = $this->fileSystem->realpath($asset['data']);
+          $css .= file_get_contents($file);
+        }
       }
       elseif ($asset['type'] === 'external') {
         // Use guzzle to work around allow_url_fopen limitations.
diff --git a/src/InlineAllCssServiceProvider.php b/src/InlineAllCssServiceProvider.php
deleted file mode 100644
index 0f5a812..0000000
--- a/src/InlineAllCssServiceProvider.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace Drupal\inline_all_css;
-
-use Drupal\Core\Asset\CssCollectionOptimizer;
-use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\Core\DependencyInjection\ServiceProviderBase;
-use Symfony\Component\DependencyInjection\Reference;
-
-/**
- * A service provider implementation added for Drupal 10.1+.
- *
- * @todo Figure something else out in https://www.drupal.org/i/3394740
- */
-class InlineAllCssServiceProvider extends ServiceProviderBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function alter(ContainerBuilder $container) {
-    if (version_compare(\Drupal::VERSION, '10.1', '>=')) {
-      if ($container->hasDefinition('asset.css.collection_optimizer')) {
-        $definition = $container->getDefinition('asset.css.collection_optimizer');
-        $definition->setClass(CssCollectionOptimizer::class);
-        $definition->setArguments([
-          new Reference('asset.css.collection_grouper'),
-          new Reference('asset.css.optimizer'),
-          new Reference('asset.css.dumper'),
-          new Reference('state'),
-          new Reference('file_system'),
-        ]);
-      }
-    }
-  }
-
-}
diff --git a/tests/src/Kernel/CssCollectionRendererTest.php b/tests/src/Kernel/CssCollectionRendererTest.php
index 1e9cb35..45c661e 100644
--- a/tests/src/Kernel/CssCollectionRendererTest.php
+++ b/tests/src/Kernel/CssCollectionRendererTest.php
@@ -18,6 +18,8 @@ use GuzzleHttp\ClientInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\StreamInterface;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
 
 /**
  * Test cases for the critical css collection renderer.
@@ -151,7 +153,26 @@ CSS
       ->method('get')
       ->willReturn($logger);
 
-    $this->instance = new CriticalCssCollectionRenderer($this->cssCollectionRenderer, $config_factory, $this->themeManager, $filesystem, $this->eventDispatcher, $http_client, $logger_factory);
+    $http_kernel = $this->getMockBuilder(HttpKernelInterface::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+
+    $response = $this->getMockBuilder(Response::class)
+      ->disableOriginalConstructor()
+      ->getMock();
+    $response
+      ->method('getContent')
+      ->willReturnOnConsecutiveCalls(
+        file_get_contents(__DIR__ . '/../../fixtures/test-1.css'),
+        file_get_contents(__DIR__ . '/../../fixtures/test-2.css'),
+        file_get_contents(__DIR__ . '/../../fixtures/test-3.css'),
+      );
+
+    $http_kernel
+      ->method('handle')
+      ->willReturn($response);
+
+    $this->instance = new CriticalCssCollectionRenderer($this->cssCollectionRenderer, $config_factory, $this->themeManager, $filesystem, $this->eventDispatcher, $http_client, $logger_factory, $http_kernel);
   }
 
   /**
