diff --git a/core/modules/system/templates/status-messages.html.twig b/core/modules/system/templates/status-messages.html.twig
index aa17bf5..a9edf5c 100644
--- a/core/modules/system/templates/status-messages.html.twig
+++ b/core/modules/system/templates/status-messages.html.twig
@@ -9,6 +9,9 @@
  * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html
  * for info.
  *
+ * Add an ARIA label to the contentinfo area so that assistive technology
+ * user agents will better describe this landmark.
+ *
  * Available variables:
  * - message_list: List of messages to be displayed, grouped by type.
  * - status_headings: List of all status types.
@@ -21,9 +24,12 @@
  */
 #}
 {% for type, messages in message_list %}
-  <div class="messages messages--{{ type }}">
+  <div class="messages messages--{{ type }} role="contentinfo">
     {% if status_headings[type] %}
-      <h2 class="visually-hidden">{{ status_headings[type] }}</h2>
+      <h2 class="visually-hidden" aria-label="{{ status_headings[type] }}">{{ status_headings[type] }}</h2>
+    {% endif %}
+    {% if status_headings[type] = 'error' %}
+      <div role="alert">
     {% endif %}
     {% if messages|length > 1 %}
       <ul class="messages__list">
@@ -34,5 +40,8 @@
     {% else %}
       {{ messages.0 }}
     {% endif %}
+    {% if status_headings[type] = 'error' %}
+      </div>
+    {% endif %}
   </div>
 {% endfor %}
