diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
index 11f048e..18a161f 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
@@ -145,12 +145,13 @@ public function massageFormValues(array $values, array $form, FormStateInterface
    */
   protected function getAutocreateBundle() {
     $bundle = NULL;
-    if ($this->getSelectionHandlerSetting('auto_create') && $target_bundles = $this->getSelectionHandlerSetting('target_bundles')) {
+    if ($this->getSelectionHandlerSetting('auto_create')) {
       // If there's only one target bundle, use it.
+      $target_bundles = $this->getSelectionHandlerSetting('target_bundles');
       if (count($target_bundles) == 1) {
         $bundle = reset($target_bundles);
       }
-      // Otherwise use the target bundle stored in selection handler settings.
+      // Otherwise use the autocreate bundle stored in selection handler settings.
       elseif (!$bundle = $this->getSelectionHandlerSetting('auto_create_bundle')) {
         // If no bundle has been set as auto create target means that there is
         // an inconsistency in entity reference field settings.
@@ -161,7 +162,6 @@ protected function getAutocreateBundle() {
         ), E_USER_WARNING);
       }
     }
-
     return $bundle;
   }

diff --git a/core/modules/views/config/schema/views.entity_reference.schema.yml b/core/modules/views/config/schema/views.entity_reference.schema.yml
index 027c62f..3b6d3d1 100644
--- a/core/modules/views/config/schema/views.entity_reference.schema.yml
+++ b/core/modules/views/config/schema/views.entity_reference.schema.yml
@@ -20,3 +20,9 @@ entity_reference_selection.views:
           sequence:
             type: string
             label: 'Argument'
+    auto_create:
+      type: boolean
+      label: 'Create referenced entities if they don''t already exist'
+    auto_create_bundle:
+      type: string
+      label: 'Bundle assigned to the auto-created entities.'
\ No newline at end of file
diff --git a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
index 05ac9b9..cb1f836 100644
--- a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
+++ b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface;
+use Drupal\Core\Entity\EntityReferenceSelection\SelectionWithAutocreateInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
@@ -12,6 +13,7 @@
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Url;
 use Drupal\views\Views;
+use Drupal\user\EntityOwnerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;

 /**
@@ -24,7 +26,7 @@
  *   weight = 0
  * )
  */
-class ViewsSelection extends PluginBase implements SelectionInterface, ContainerFactoryPluginInterface {
+class ViewsSelection extends PluginBase implements SelectionInterface, SelectionWithAutocreateInterface, ContainerFactoryPluginInterface {

   /**
    * The entity manager.
@@ -104,6 +106,12 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     $entity_type = $this->entityManager->getDefinition($this->configuration['target_type']);
     $view_storage = $this->entityManager->getStorage('view');

+    // Merge-in default values.
+    $selection_handler_settings += [
+      'auto_create' => FALSE,
+      'auto_create_bundle' => NULL,
+    ];
+
     $options = [];
     foreach ($displays as $data) {
       list($view_id, $display_id) = $data;
@@ -139,6 +147,33 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
         '#required' => FALSE,
         '#description' => $this->t('Provide a comma separated list of arguments to pass to the view.'),
       ];
+
+      $form['auto_create'] = [
+        '#type' => 'checkbox',
+        '#title' => $this->t("Create referenced entities if they don't already exist"),
+        '#default_value' => $selection_handler_settings['auto_create'],
+      ];
+      if ($entity_type->hasKey('bundle')) {
+        $entity_type = $this->configuration['target_type'];
+        $bundles = $this->entityManager->getBundleInfo($entity_type);
+        $bundle_options = array();
+        foreach ($bundles as $bundle_name => $bundle_info) {
+          $bundle_options[$bundle_name] = $bundle_info['label'];
+         }
+        natsort($bundle_options);
+        $form['auto_create_bundle'] = [
+          '#type' => 'select',
+          '#title' => $this->t('Store new items in'),
+          '#options' => $bundle_options,
+          '#default_value' => $selection_handler_settings['auto_create_bundle'],
+          '#access' => count($bundles) > 1,
+          '#states' => [
+             'visible' => [
+               ':input[name="settings[handler_settings][auto_create]"]' => ['checked' => TRUE],
+             ],
+          ],
+        ];
+      }
     }
     else {
       if ($this->currentUser->hasPermission('administer views') && $this->moduleHandler->moduleExists('views_ui')) {
@@ -255,6 +290,35 @@ public function validateReferenceableEntities(array $ids) {
   }

   /**
+    * {@inheritdoc}
+    */
+  public function createNewEntity($entity_type_id, $bundle, $label, $uid) {
+    $entity_type = $this->entityManager->getDefinition($entity_type_id);
+    $bundle_key = $entity_type->getKey('bundle');
+    $label_key = $entity_type->getKey('label');
+    $entity = $this->entityManager->getStorage($entity_type_id)->create(array(
+       $bundle_key => $bundle,
+       $label_key => $label,
+    ));
+    if ($entity instanceof EntityOwnerInterface) {
+      $entity->setOwnerId($uid);
+    }
+    return $entity;
+  }
+
+  /**
+  * {@inheritdoc}
+  */
+  public function validateReferenceableNewEntities(array $entities) {
+    return array_filter($entities, function ($entity) {
+      if (!empty($this->configuration['handler_settings']['auto_create']) && isset($this->configuration['handler_settings']['auto_create_bundle'])) {
+        return ($entity->bundle() === $this->configuration['handler_settings']['auto_create_bundle']);
+      }
+      return TRUE;
+    });
+  }
+
+  /**
    * Element validate; Check View is valid.
    */
   public static function settingsFormValidate($element, FormStateInterface $form_state, $form) {
