diff --git a/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php b/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/EntityReferenceAutocompleteWidget.php
index 11f048e6f8..18a161f925 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 @@ class EntityReferenceAutocompleteWidget extends WidgetBase {
    */
   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 @@ class EntityReferenceAutocompleteWidget extends WidgetBase {
         ), E_USER_WARNING);
       }
     }
-
     return $bundle;
   }
 
diff --git a/modules/views/config/schema/views.entity_reference.schema.yml b/modules/views/config/schema/views.entity_reference.schema.yml
index 027c62fa46..3b6d3d1253 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/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php b/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
index 05ac9b99f1..404963d516 100644
--- a/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
+++ b/core/modules/views/src/Plugin/EntityReferenceSelection/ViewsSelection.php
@@ -5,6 +5,7 @@ namespace Drupal\views\Plugin\EntityReferenceSelection;
 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\Plugin\PluginBase;
 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 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   weight = 0
  * )
  */
-class ViewsSelection extends PluginBase implements SelectionInterface, ContainerFactoryPluginInterface {
+class ViewsSelection extends PluginBase implements SelectionInterface, SelectionWithAutocreateInterface, ContainerFactoryPluginInterface {
 
   /**
    * The entity manager.
@@ -104,6 +106,12 @@ class ViewsSelection extends PluginBase implements SelectionInterface, Container
     $entity_type = $this->entityManager->getDefinition($this->configuration['target_type']);
     $view_storage = $this->entityManager->getStorage('view');
 
+    // Merge-in default values.
+    $selection_handler_settings += array(
+      'auto_create' => FALSE,
+      'auto_create_bundle' => NULL,
+    );
+
     $options = [];
     foreach ($displays as $data) {
       list($view_id, $display_id) = $data;
@@ -139,6 +147,35 @@ class ViewsSelection extends PluginBase implements SelectionInterface, Container
         '#required' => FALSE,
         '#description' => $this->t('Provide a comma separated list of arguments to pass to the view.'),
       ];
+
+
+      $form['auto_create'] = array(
+        '#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 +292,35 @@ class ViewsSelection extends PluginBase implements SelectionInterface, Container
   }
 
   /**
+   * {@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 (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) {
