diff --git a/src/Element/InlineEntityForm.php b/src/Element/InlineEntityForm.php
index 34de8f3..b55f781 100644
--- a/src/Element/InlineEntityForm.php
+++ b/src/Element/InlineEntityForm.php
@@ -87,9 +87,6 @@ class InlineEntityForm extends RenderElement {
     if (empty($entity_form['#entity_type'])) {
       throw new \InvalidArgumentException('The inline_entity_form element requires the #entity_type property.');
     }
-    if (empty($entity_form['#bundle'])) {
-      throw new \InvalidArgumentException('The inline_entity_form element requires the #bundle property.');
-    }
     if (isset($entity_form['#default_value']) && !($entity_form['#default_value'] instanceof EntityInterface)) {
       throw new \InvalidArgumentException('The inline_entity_form #default_value property must be an entity object.');
     }
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
index e525a94..87e7792 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
@@ -55,7 +55,7 @@ class InlineEntityFormSimple extends InlineEntityFormBase {
       $delta,
       'inline_entity_form'
     ]);
-    $bundle = reset($this->getFieldSetting('handler_settings')['target_bundles']);
+    $bundle = !empty($this->getFieldSetting('handler_settings')['target_bundles']) ? reset($this->getFieldSetting('handler_settings')['target_bundles']) : NULL;
     $element['inline_entity_form'] = $this->getInlineEntityForm($op, $bundle, $langcode, $delta, $parents, $entity);
 
     if ($op == 'edit') {
@@ -177,15 +177,14 @@ class InlineEntityFormSimple extends InlineEntityFormBase {
    * {@inheritdoc}
    */
   public static function isApplicable(FieldDefinitionInterface $field_definition) {
-    if (!$field_definition->isRequired()) {
-      return FALSE;
+    $handler_settings = $field_definition->getSettings()['handler_settings'];
+    $target_entity_type_id = $field_definition->getFieldStorageDefinition()->getSetting('target_type');
+    $target_entity_type = \Drupal::entityTypeManager()->getDefinition($target_entity_type_id);
+    // The target entity type doesn't use bundles, no need to validate them.
+    if (!$target_entity_type->getKey('bundle')) {
+      return TRUE;
     }
 
-    $handler_settings = $field_definition->getSettings()['handler_settings'];
-    // Entity types without bundles will throw notices on next condition so let's
-    // stop before they do. We should support this kind of entities too. See
-    // https://www.drupal.org/node/2569193 and remove this check once that issue
-    // lands.
     if (empty($handler_settings['target_bundles'])) {
       return FALSE;
     }
diff --git a/src/Tests/InlineEntityFormTestBase.php b/src/Tests/InlineEntityFormTestBase.php
index 2ee357b..e3bf62d 100644
--- a/src/Tests/InlineEntityFormTestBase.php
+++ b/src/Tests/InlineEntityFormTestBase.php
@@ -109,6 +109,33 @@ abstract class InlineEntityFormTestBase extends WebTestBase {
   }
 
   /**
+   * Ensures that an entity with a specific label exists.
+   *
+   * @param string $label
+   *   The label of the entity.
+   * @param string $entity_type_id
+   *   The entity type ID.
+   * @param string $bundle
+   *   (optional) The bundle this entity should have.
+   */
+  protected function assertEntityByLabel($label, $entity_type_id = 'node', $bundle = NULL) {
+    $entity_type_manager = \Drupal::entityTypeManager();
+    $entity_type = $entity_type_manager->getDefinition($entity_type_id);
+    $label_key = $entity_type->getKey('label');
+    $bundle_key = $entity_type->getKey('bundle');
+
+    $query = $entity_type_manager->getStorage($entity_type_id)->getQuery();
+    $query->condition($label_key, $label);
+
+    if ($bundle && $bundle_key) {
+      $query->condition($bundle_key, $bundle);
+    }
+
+    $result = $query->execute();
+    $this->assertTrue(!empty($result));
+  }
+
+  /**
    * Checks for check correct fields on form displays based on exported config
    * in inline_entity_form_test module.
    *
diff --git a/src/Tests/SimpleWidgetWebTest.php b/src/Tests/SimpleWidgetWebTest.php
index a431775..519c261 100644
--- a/src/Tests/SimpleWidgetWebTest.php
+++ b/src/Tests/SimpleWidgetWebTest.php
@@ -31,6 +31,8 @@ class SimpleWidgetWebTest extends InlineEntityFormTestBase {
       'edit any ief_simple_single content',
       'edit own ief_test_custom content',
       'view own unpublished content',
+      'create ief_simple_entity_no_bundle content',
+      'administer entity_test__without_bundle content',
     ]);
   }
 
@@ -227,4 +229,20 @@ class SimpleWidgetWebTest extends InlineEntityFormTestBase {
     }
   }
 
+  /**
+   * Ensures that an entity without bundles can be used with the simple widget.
+   */
+  public function testEntityWithoutBundle() {
+    $this->drupalLogin($this->user);
+
+    $edit = [
+      'title[0][value]' => 'Node title',
+      'field_ief_entity_no_bundle[0][inline_entity_form][name][0][value]' => 'Entity title',
+    ];
+    $this->drupalPostForm('node/add/ief_simple_entity_no_bundle', $edit, 'Save');
+
+    $this->assertNodeByTitle('Node title', 'ief_simple_entity_no_bundle');
+    $this->assertEntityByLabel('Entity title', 'entity_test__without_bundle');
+  }
+
 }
diff --git a/tests/modules/inline_entity_form_test/config/install/core.entity_form_display.node.ief_simple_entity_no_bundle.default.yml b/tests/modules/inline_entity_form_test/config/install/core.entity_form_display.node.ief_simple_entity_no_bundle.default.yml
new file mode 100644
index 0000000..a320b94
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/install/core.entity_form_display.node.ief_simple_entity_no_bundle.default.yml
@@ -0,0 +1,57 @@
+uuid: 6083a959-98d3-4509-ab79-d174014f0b1b
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.ief_simple_entity_no_bundle.field_ief_entity_no_bundle
+    - node.type.ief_simple_entity_no_bundle
+  module:
+    - inline_entity_form
+id: node.ief_simple_entity_no_bundle.default
+targetEntityType: node
+bundle: ief_simple_entity_no_bundle
+mode: default
+content:
+  created:
+    type: datetime_timestamp
+    weight: 10
+    settings: {  }
+    third_party_settings: {  }
+  field_ief_entity_no_bundle:
+    weight: 31
+    settings:
+      form_mode: default
+      override_labels: false
+      label_singular: ''
+      label_plural: ''
+    third_party_settings: {  }
+    type: inline_entity_form_simple
+  promote:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 15
+    third_party_settings: {  }
+  sticky:
+    type: boolean_checkbox
+    settings:
+      display_label: true
+    weight: 16
+    third_party_settings: {  }
+  title:
+    type: string_textfield
+    weight: -5
+    settings:
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+  uid:
+    type: entity_reference_autocomplete
+    weight: 5
+    settings:
+      match_operator: CONTAINS
+      size: 60
+      placeholder: ''
+    third_party_settings: {  }
+hidden: {  }
+
diff --git a/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_simple_entity_no_bundle.field_ief_entity_no_bundle.yml b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_simple_entity_no_bundle.field_ief_entity_no_bundle.yml
new file mode 100644
index 0000000..be73463
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/install/field.field.node.ief_simple_entity_no_bundle.field_ief_entity_no_bundle.yml
@@ -0,0 +1,26 @@
+uuid: f189ac74-5439-424d-9cb4-488c98e5177e
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_ief_entity_no_bundle
+    - node.type.ief_simple_entity_no_bundle
+id: node.ief_simple_entity_no_bundle.field_ief_entity_no_bundle
+field_name: field_ief_entity_no_bundle
+entity_type: node
+bundle: ief_simple_entity_no_bundle
+label: ief_entity_no_bundle
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:entity_test__without_bundle'
+  handler_settings:
+    target_bundles: null
+    sort:
+      field: _none
+    auto_create: false
+field_type: entity_reference
+
diff --git a/tests/modules/inline_entity_form_test/config/install/field.storage.node.field_ief_entity_no_bundle.yml b/tests/modules/inline_entity_form_test/config/install/field.storage.node.field_ief_entity_no_bundle.yml
new file mode 100644
index 0000000..9b21f69
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/install/field.storage.node.field_ief_entity_no_bundle.yml
@@ -0,0 +1,21 @@
+uuid: 97be9377-f205-433f-83dd-18c931f026e2
+langcode: en
+status: true
+dependencies:
+  module:
+    - inline_entity_form_test
+    - node
+id: node.field_ief_entity_no_bundle
+field_name: field_ief_entity_no_bundle
+entity_type: node
+type: entity_reference
+settings:
+  target_type: entity_test__without_bundle
+module: core
+locked: false
+cardinality: 1
+translatable: true
+indexes: {  }
+persist_with_no_fields: false
+custom_storage: false
+
diff --git a/tests/modules/inline_entity_form_test/config/install/node.type.ief_simple_entity_no_bundle.yml b/tests/modules/inline_entity_form_test/config/install/node.type.ief_simple_entity_no_bundle.yml
new file mode 100644
index 0000000..dfd0b7b
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/install/node.type.ief_simple_entity_no_bundle.yml
@@ -0,0 +1,11 @@
+uuid: 21d963ba-415e-4ea2-b3fe-c785c261a5b1
+langcode: en
+status: true
+name: 'IEF simple entity no bundle'
+type: ief_simple_entity_no_bundle
+description: ''
+help: ''
+new_revision: true
+preview_mode: 1
+display_submitted: true
+
diff --git a/tests/modules/inline_entity_form_test/inline_entity_form_test.permissions.yml b/tests/modules/inline_entity_form_test/inline_entity_form_test.permissions.yml
new file mode 100644
index 0000000..444824a
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/inline_entity_form_test.permissions.yml
@@ -0,0 +1,2 @@
+administer entity_test__without_bundle content:
+  title: administer entity_test__without_bundle content
diff --git a/tests/modules/inline_entity_form_test/src/Entity/EntityTestWithoutBundle.php b/tests/modules/inline_entity_form_test/src/Entity/EntityTestWithoutBundle.php
new file mode 100644
index 0000000..22858cf
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/src/Entity/EntityTestWithoutBundle.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\inline_entity_form_test\Entity;
+
+use Drupal\Core\Entity\ContentEntityBase;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Field\BaseFieldDefinition;
+
+/**
+ * Defines a test entity class without bundles.
+ *
+ * @ContentEntityType(
+ *   id = "entity_test__without_bundle",
+ *   label = @Translation("Test entity without bundle"),
+ *   base_table = "entity_test__without_bundle",
+ *   admin_permission = "administer entity_test__without_bundle content",
+ *   entity_keys = {
+ *     "id" = "id",
+ *     "uuid" = "uuid",
+ *     "label" = "name",
+ *     "langcode" = "langcode",
+ *   },
+ *   handlers = {
+ *     "route_provider" = {
+ *       "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
+ *     },
+ *   },
+ *   links = {
+ *     "canonical" = "/entity_test__without_bundle/{entity_test__without_bundle}",
+ *   },
+ * )
+ */
+class EntityTestWithoutBundle extends ContentEntityBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
+    $fields = parent::baseFieldDefinitions($entity_type);
+
+    $fields['name'] = BaseFieldDefinition::create('string')
+      ->setLabel(t('Name'))
+      ->setDescription(t('The name of the test entity.'))
+      ->setTranslatable(TRUE)
+      ->setSetting('max_length', 32)
+      ->setDisplayOptions('view', [
+        'label' => 'hidden',
+        'type' => 'string',
+        'weight' => -5,
+      ])
+      ->setDisplayOptions('form', [
+        'type' => 'string_textfield',
+        'weight' => -5,
+      ]);
+    return $fields;
+  }
+
+}
