diff --git a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
index 86bc703cef..dd7835c16a 100644
--- a/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityReferenceSelection/EntityReferenceSelectionAccessTest.php
@@ -351,6 +351,31 @@ public function testUserHandler() {
       ),
     );
     $this->assertReferenceable($selection_options, $referenceable_tests, 'User handler (does not include anonymous)');
+
+    // Log in with the user without 'administer users'.
+    \Drupal::currentUser()->setAccount($users['non_admin']);
+    $selection_options['handler_settings']['include_anonymous'] = TRUE;
+    $selection_options['handler_settings']['include_blocked'] = TRUE;
+    $referenceable_tests = [
+      [
+        'arguments' => [],
+        'result' => [
+          'user' => [
+            $users['admin']->id() => $user_labels['admin'],
+            $users['non_admin']->id() => $user_labels['non_admin'],
+            $users['blocked']->id() => $user_labels['blocked'],
+            $users['anonymous']->id() => $user_labels['anonymous'],
+          ],
+        ],
+      ],
+    ];
+    $this->assertReferenceable($selection_options, $referenceable_tests, 'User handler (includes blocked as user without administer users)');
+
+    // Users with 'administer users' can always view blocked users regardless of
+    // the state of 'include_blocked' selection option.
+    \Drupal::currentUser()->setAccount($users['admin']);
+    $selection_options['handler_settings']['include_blocked'] = FALSE;
+    $this->assertReferenceable($selection_options, $referenceable_tests, 'User handler (includes blocked as admin');
   }
 
   /**
diff --git a/core/modules/user/config/schema/user.schema.yml b/core/modules/user/config/schema/user.schema.yml
index 627d8a6960..0b1f6b4c16 100644
--- a/core/modules/user/config/schema/user.schema.yml
+++ b/core/modules/user/config/schema/user.schema.yml
@@ -185,6 +185,9 @@ entity_reference_selection.default:user:
     include_anonymous:
       type: boolean
       label: 'Include the anonymous user in the matched entities.'
+    include_blocked:
+      type: boolean
+      label: 'Include blocked users in the matched entities.'
 
 field.formatter.settings.user_name:
   type: mapping
diff --git a/core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php b/core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php
index 8dfba39636..80ab035e92 100644
--- a/core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php
+++ b/core/modules/user/src/Plugin/EntityReferenceSelection/UserSelection.php
@@ -91,6 +91,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
         'type' => '_none',
       ),
       'include_anonymous' => TRUE,
+      'include_blocked' => FALSE,
     );
 
     $form['include_anonymous'] = array(
@@ -99,6 +100,13 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       '#default_value' => $selection_handler_settings['include_anonymous'],
     );
 
+    $form['include_blocked'] = array(
+      '#type' => 'checkbox',
+      '#title' => $this->t('Include blocked users'),
+      '#default_value' => !empty($selection_handler_settings['include_blocked']),
+      '#description' => $this->t('If this option is not set, only users with the <em>administer users</em> permission may reference blocked users.'),
+    );
+
     // Add user specific filter options.
     $form['filter']['type'] = array(
       '#type' => 'select',
@@ -163,7 +171,7 @@ protected function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS')
 
     // Adding the permission check is sadly insufficient for users: core
     // requires us to also know about the concept of 'blocked' and 'active'.
-    if (!$this->currentUser->hasPermission('administer users')) {
+    if (!$this->currentUser->hasPermission('administer users') && empty($handler_settings['include_blocked'])) {
       $query->condition('status', 1);
     }
     return $query;
