diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index 3ae190b88a82062c04bbeaa839c5e7ee9ae25078..39bce25ebd516feace6cb381c946e3508e2dd522 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -167,7 +167,7 @@ class Template
         $this->twig_template = ($namespace !== null) ? '@'.$namespace.'/'.$filename : $filename;
         $loader = new TemplateLoader();
         $templateDirs = $this->findThemeTemplateDirs();
-        if ($this->module) {
+        if ($this->module && $this->module != 'core') {
             $templateDirs[] = [$this->module => TemplateLoader::getModuleTemplateDir($this->module)];
         }
         if ($this->theme['module']) {
@@ -180,6 +180,8 @@ class Template
             }
         }
 
+        $templateDirs[] = ['core' => TemplateLoader::getModuleTemplateDir('core')];
+
         // default, themeless templates are checked last
         $templateDirs[] = [
             \Twig_Loader_Filesystem::MAIN_NAMESPACE => $this->configuration->resolvePath('templates')
diff --git a/templates/error.twig b/templates/error.twig
index 311aa2925e979d05b9c89068b038a40019b9d79f..23e06c570215d3ca551f54a430006e95d8d16995 100644
--- a/templates/error.twig
+++ b/templates/error.twig
@@ -10,7 +10,9 @@
        e.g. "core:no_state.tpl.php". The format is "<module>:<template name>"
     #}
     {% if includeTemplate -%}
-        {% include(includeTemplate) %}
+        {% set parts = includeTemplate|replace({'.tpl.php':'.twig'})|split(':') %}
+        {% set namespacedTemplate = "@" ~ parts[0] ~ "/" ~ parts[1] %}
+        {% include(namespacedTemplate) %}
     {%- endif %}
 
     <div class="message-box">