diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
index 0859058..0825765 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
@@ -514,6 +514,10 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
         $element['form'] += inline_entity_form_reference_form($element['form'], $form_state);
       }
 
+      if ($element['#required']) {
+        $element['form']['#element_validate'][] = [get_class($this), 'requiredValidate'];
+      }
+
       // Pre-opened forms can't be closed in order to force the user to
       // add / reference an entity.
       if ($hide_cancel) {
@@ -537,6 +541,16 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
   }
 
   /**
+   * Custom element_validate handler for inline_entity_form fields.
+   *
+   */
+  public static function requiredValidate($element, FormStateInterface $form_state, $form) {
+    if (empty($element['entity_browser']['#value']['entities'])) {
+      $form_state->setError($element, 'The field "' . $element['#title']->render() . '" is required.');
+    }
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function extractFormValues(FieldItemListInterface $items, array $form, FormStateInterface $form_state) {
