diff --git a/src/Plugin/ContextReaction/Blocks.php b/src/Plugin/ContextReaction/Blocks.php
index 9734274..1d2ecfd 100644
--- a/src/Plugin/ContextReaction/Blocks.php
+++ b/src/Plugin/ContextReaction/Blocks.php
@@ -205,6 +205,15 @@ class Blocks extends ContextReactionPluginBase implements ContainerFactoryPlugin
           $block->setMainContent($main_content);
         }
 
+        // Inject runtime contexts.
+        // Must be before $block->access() to prevent ContextException.
+        // For example ctools EntityField.
+        // @see \Drupal\ctools_block\Plugin\Block\EntityField->blockAccess()
+        if ($block instanceof ContextAwarePluginInterface) {
+          $contexts = $this->contextRepository->getRuntimeContexts($block->getContextMapping());
+          $this->contextHandler->applyContextMapping($block, $contexts);
+        }
+
         // Make sure the user is allowed to view the block.
         $access = $block->access($this->account, TRUE);
         $cacheability->addCacheableDependency($access);
@@ -221,12 +230,6 @@ class Blocks extends ContextReactionPluginBase implements ContainerFactoryPlugin
           $block->setTitle($title);
         }
 
-        // Inject runtime contexts.
-        if ($block instanceof ContextAwarePluginInterface) {
-          $contexts = $this->contextRepository->getRuntimeContexts($block->getContextMapping());
-          $this->contextHandler->applyContextMapping($block, $contexts);
-        }
-
         $context_entity = $this->entityTypeManager
           ->getStorage('context')
           ->load($configuration['context_id']);
