diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index c622556..3776f94 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -105,20 +105,14 @@ function search_theme() {
       'variables' => array('result' => NULL, 'plugin_id' => NULL),
       'file' => 'search.pages.inc',
     ),
+    'block__search_form_block' => array(
+      'render element' => 'elements',
+      'base hook' => 'block',
+    ),
   );
 }
 
 /**
- * Implements hook_preprocess_HOOK() for block templates.
- */
-function search_preprocess_block(&$variables) {
-  if ($variables['plugin_id'] == 'search_form_block') {
-    $variables['attributes']['role'] = 'search';
-    $variables['attributes']['class'][] = 'container-inline';
-  }
-}
-
-/**
  * Clears either a part of, or the entire search index.
  *
  * @param $sid
diff --git a/core/modules/search/templates/block--search-form-block.html.twig b/core/modules/search/templates/block--search-form-block.html.twig
new file mode 100644
index 0000000..9a41444
--- /dev/null
+++ b/core/modules/search/templates/block--search-form-block.html.twig
@@ -0,0 +1,53 @@
+{#
+/**
+ * @file
+ * Default theme override for the search form block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ *   - label: The configured label for the block.
+ *   - label_display: The display settings for the label.
+ *   - module: The module that provided this block plugin.
+ *   - cache: The cache settings.
+ *   - Block plugin specific settings will also be stored here.
+ * - block - The full block entity.
+ *   - label_hidden: The hidden block title value if the block was
+ *     configured to hide the title ('label' is empty in this case).
+ *   - module: The module that generated the block.
+ *   - delta: An ID for the block, unique within each module.
+ *   - region: The block region embedding the current block.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ *   be added to the main container tag of this template.
+ *   - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ *   tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ *   displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ *   displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ *
+ * @ingroup themeable
+ */
+#}
+{%
+  set classes = [
+    'block',
+    'block-search',
+    'container-inline',
+  ]
+%}
+<div{{ attributes.addClass(classes)|without('role') }} role="search">
+  {{ title_prefix }}
+  {% if label %}
+    <h2{{ title_attributes }}>{{ label }}</h2>
+  {% endif %}
+  {{ title_suffix }}
+  {% block content %}
+    {{ content }}
+  {% endblock %}
+</div>
