diff --git a/core/modules/system/lib/Drupal/system/Controller/SystemController.php b/core/modules/system/lib/Drupal/system/Controller/SystemController.php
index 5f55d6e..a766055 100644
--- a/core/modules/system/lib/Drupal/system/Controller/SystemController.php
+++ b/core/modules/system/lib/Drupal/system/Controller/SystemController.php
@@ -137,12 +137,10 @@ public function overview() {
           );
 
           if (!empty($block['content']['#content'])) {
-            $block['show'] = TRUE;
+            // Prepare for sorting as in function _menu_tree_check_access().
+            // The weight is offset so it is always positive, with a uniform 5-digits.
+            $blocks[(50000 + $item['weight']) . ' ' . $item['title'] . ' ' . $item['mlid']] = $block;
           }
-
-          // Prepare for sorting as in function _menu_tree_check_access().
-          // The weight is offset so it is always positive, with a uniform 5-digits.
-          $blocks[(50000 + $item['weight']) . ' ' . $item['title'] . ' ' . $item['mlid']] = $block;
         }
       }
     }
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 37a30e4..c14fb09 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -81,44 +81,6 @@ function _system_is_incompatible(&$incompatible, $files, $file) {
 }
 
 /**
- * Returns HTML for an administrative block for display.
- *
- * @param $variables
- *   An associative array containing:
- *   - block: An array containing information about the block:
- *     - show: A Boolean whether to output the block. Defaults to FALSE.
- *     - title: The block's title.
- *     - content: (optional) Formatted content for the block.
- *     - description: (optional) Description of the block. Only output if
- *       'content' is not set.
- *
- * @ingroup themeable
- */
-function theme_admin_block($variables) {
-  $block = $variables['block'];
-  $output = '';
-
-  // Don't display the block if it has no content to display.
-  if (empty($block['show'])) {
-    return $output;
-  }
-
-  $output .= '<div class="admin-panel">';
-  if (!empty($block['title'])) {
-    $output .= '<h3>' . $block['title'] . '</h3>';
-  }
-  if (!empty($block['content'])) {
-    $output .= '<div class="body">' . render($block['content']) . '</div>';
-  }
-  else {
-    $output .= '<div class="description">' . $block['description'] . '</div>';
-  }
-  $output .= '</div>';
-
-  return $output;
-}
-
-/**
  * Prepares variables for administrative content block templates.
  *
  * Default template: admin-block-content.html.twig.
@@ -229,7 +191,6 @@ function theme_system_admin_index($variables) {
       $block['title'] = $module;
       $block['content'] = drupal_render($admin_block_content);
       $block['description'] = t($description);
-      $block['show'] = TRUE;
 
       $admin_block = array(
         '#theme' => 'admin_block',
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 3488392..67431a6 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -190,6 +190,7 @@ function system_theme() {
     'admin_block' => array(
       'variables' => array('block' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'admin-block',
     ),
     'admin_block_content' => array(
       'variables' => array('content' => NULL),
diff --git a/core/modules/system/templates/admin-block.html.twig b/core/modules/system/templates/admin-block.html.twig
new file mode 100644
index 0000000..20aa000
--- /dev/null
+++ b/core/modules/system/templates/admin-block.html.twig
@@ -0,0 +1,26 @@
+{#
+/**
+ * @file
+ * Default theme implementation for an administrative block.
+ *
+ * Available variables:
+ * - block: An array of information about the block, including:
+ *   - show: A flag indicating if the block should be displayed.
+ *   - title: The block title.
+ *   - content: (optional) The content of the block.
+ *   - description: (optional) A description of the block.
+ *     (Description should only be output if content is not available).
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="admin-panel">
+  {% if block.title %}
+    <h3>{{ block.title }}</h3>
+  {% endif %}
+  {% if block.content %}
+    <div class="body">{{ block.content }}</div>
+  {% elseif block.description %}
+    <div class="description">{{ block.description }}</div>
+  {% endif %}
+</div>
