diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
index dbed344..d3a11a6 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
@@ -7,6 +7,7 @@ use Drupal\Component\Utility\SortArray;
 use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Entity\RevisionableInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
@@ -23,7 +24,8 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   id = "inline_entity_form_complex",
  *   label = @Translation("Inline entity form - Complex"),
  *   field_types = {
- *     "entity_reference"
+ *     "entity_reference",
+ *     "entity_reference_revisions",
  *   },
  *   multiple_values = true
  * )
@@ -608,6 +610,9 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
       $item = $value;
       if (isset($item['entity'])) {
         $item['target_id'] = $item['entity']->id();
+        if ($item['entity'] instanceof RevisionableInterface) {
+          $item['target_revision_id'] = $item['entity']->getRevisionId();
+        }
         $items[] = $item;
       }
       else {
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
index 2944ea6..48c2874 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
@@ -17,7 +17,8 @@ use Drupal\Core\Render\Element;
  *   id = "inline_entity_form_simple",
  *   label = @Translation("Inline entity form - Simple"),
  *   field_types = {
- *     "entity_reference"
+ *     "entity_reference",
+ *     "entity_reference_revisions",
  *   },
  *   multiple_values = false
  * )
diff --git a/src/Tests/InlineEntityFormRevisionTest.php b/src/Tests/InlineEntityFormRevisionTest.php
new file mode 100644
index 0000000..02399f2
--- /dev/null
+++ b/src/Tests/InlineEntityFormRevisionTest.php
@@ -0,0 +1,160 @@
+<?php
+
+namespace Drupal\inline_entity_form\Tests;
+
+/**
+ * Class InlineEntityFormRevisionTest
+ *
+ * @group inline_entity_form
+ */
+class InlineEntityFormRevisionTest extends InlineEntityFormTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'entity_reference_revisions',
+    'inline_entity_form',
+    'inline_entity_form_test',
+    'field',
+    'field_ui',
+    'menu_ui',
+    'path',
+    'text',
+  ];
+
+  /**
+   * URL to add new content.
+   *
+   * @var string
+   */
+  protected $formContentAddUrl;
+
+  /**
+   * Node storage.
+   *
+   * @var \Drupal\Core\Entity\ContentEntityStorageInterface;
+   */
+  protected $nodeStorage;
+
+  /**
+   * Prepares environment for
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->user = $this->createUser([
+      'create ief_test_revisions_complex content',
+      'edit any ief_test_revisions_complex content',
+      'delete any ief_test_revisions_complex content',
+      'create ief_test_custom content',
+      'edit any ief_test_custom content',
+      'delete any ief_test_custom content',
+      'create ief_test_complex content',
+      'edit any ief_test_complex content',
+      'delete any ief_test_complex content',
+      'edit any ief_test_nested1 content',
+      'edit any ief_test_nested2 content',
+      'edit any ief_test_nested3 content',
+      'view own unpublished content',
+      'administer content types',
+    ]);
+    $this->drupalLogin($this->user);
+
+    $this->formContentAddUrl = 'node/add/ief_test_revisions_complex';
+    $this->nodeStorage = $this->container->get('entity_type.manager')->getStorage('node');
+  }
+
+  /**
+   * Tests multiple revision scenarios.
+   *
+   * When I create a new node with an entity reference, and they have revisions
+   * enabled, then I should be able to add the revision information. Then the
+   * revision and its child should be kept in sync.
+   */
+  public function testInlineEntityFormRevision() {
+
+    // Enable revisioning.
+    $this->enableRevisioning(['ief_test_revisions_complex', 'ief_reference_type']);
+
+    // Initial node.
+    $edit = [
+      'title[0][value]' => 'Parent Title',
+      'field_entity_ref_revision[form][inline_entity_form][title][0][value]' => 'Some reference',
+    ];
+
+    $this->drupalPostForm($this->formContentAddUrl, [], t('Add new node'));
+
+    // Actually save the node.
+    $this->drupalPostForm(NULL, $edit, t('Save'));
+
+    // Double check that we got a success message.
+    $this->assertText($edit['title[0][value]'] . ' has been created', 'Parent node title found.');
+
+    // When I edit the node and its child.
+    // Get and store the node and its edit path.
+    $node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
+    $this->assertTrue($node, 'Node found in database.');
+    $node_edit_url = 'node/' . $node->id() . '/edit';
+
+    // Go to the edit page.
+    $this->drupalGet($node_edit_url);
+    $this->drupalPostAjaxForm(NULL, [], $this->getButtonName('//input[@type="submit" and @value="Edit" and @data-drupal-selector="edit-field-entity-ref-revision-entities-0-actions-ief-entity-dit"]'));
+
+    // New content.
+    $edit = [
+      'field_entity_ref_revision[form][inline_entity_form][entities][0][form][title][0][value]' => 'Some reference revision',
+    ];
+
+    // New parent content.
+    $parent_edit = [
+      'title[0][value]' => 'Parent revision Title',
+      'revision_log[0][value]' => 'First revision log message',
+    ];
+
+    // And I submit the inline form.
+    $this->drupalPostAjaxForm(NULL, $edit, $this->getButtonName('//input[@type="submit" and @value="Update node" and @data-drupal-selector="edit-field-entity-ref-revision-form-inline-entity-form-ntities-0-form-actions-ief-edit-save"]'));
+    $this->assertResponse(200, 'Creating node via inline form was successful.');
+
+    // And I submit the main form.
+    $this->drupalPostForm(NULL, $parent_edit, t('Save'));
+
+    // Then I should see a success message.
+    $this->assertText($parent_edit['title[0][value]'] . ' has been updated', 'Parent node title ound.');
+
+    // And load the node.
+    $node_revision = $this->drupalGetNodeByTitle($parent_edit['title[0][value]'], TRUE);
+    $this->assertTrue($node_revision, 'Node found in database.');
+
+    // Then the node should have 2 different revision id's.
+    $this->assertNotEqual($node->getRevisionId(), $node_revision->getRevisionId(), 'Node versions ave different revision ids.');
+
+    // Then the revision titles should be different.
+    $this->assertNotEqual($node->getTitle(), $node_revision->getTitle(), 'Node revisions have ifferent log messages.');
+
+    // Then the referenced items should have their revisions.
+    $original_child = $node->get('field_entity_ref_revision');
+    $revision_child = $node_revision->get('field_entity_ref_revision');
+
+    // And they should not be equal.
+    $this->assertNotEqual($original_child->get(0)->getValue(), $revision_child->get(0)->getValue());
+    $this->assertEqual($original_child->get(0)->getValue()['target_id'], $revision_child->get(0)->etValue()['target_id']);
+    $this->assertTrue($original_child->get(0)->getValue()['target_revision_id'] < $revision_child->get(0)->getValue()['target_revision_id']);
+  }
+
+  /**
+   * Enables revisioning for a given node type.
+   *
+   * @param array $entity_types
+   *   The entity types to enable revisioning for.
+   */
+  protected function enableRevisioning($entity_types) {
+    foreach ($entity_types as $type) {
+      $this->drupalGet('admin/structure/types/manage/' . $type);
+      $this->drupalPostForm(NULL, ['options[revision]' => TRUE], t('Save content type'));
+    }
+  }
+
+}
diff --git a/src/WidgetSubmit.php b/src/WidgetSubmit.php
index 98921a4..fcc568b 100644
--- a/src/WidgetSubmit.php
+++ b/src/WidgetSubmit.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\inline_entity_form;
 
+use Drupal\Core\Entity\RevisionableInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\inline_entity_form\Element\InlineEntityForm;
 
@@ -46,6 +47,19 @@ class WidgetSubmit {
           /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
           $entity = $entity_item['entity'];
           $handler = InlineEntityForm::getInlineFormHandler($entity->getEntityTypeId());
+          if ($entity instanceof RevisionableInterface) {
+            $entity->setNewRevision();
+            if (in_array('Drupal\node\NodeInterface', class_implements($entity))) {
+              $entity->setRevisionCreationTime(REQUEST_TIME);
+              // If a new revision is created, save the current user as revision author.
+              $entity->setRevisionAuthorId(\Drupal::currentUser()->id());
+            }
+            elseif (in_array('Drupal\entity\Revision\EntityRevisionLogInterface', class_implements($entity))) {
+              // If a new revision is created, save the current user as revision author.
+              $entity->setRevisionUserId(\Drupal::currentUser()->id());
+              $entity->setRevisionCreationTime(REQUEST_TIME);
+            }
+          }
           $handler->save($entity);
           $widget_state['entities'][$delta]['needs_save'] = FALSE;
         }
diff --git a/tests/modules/inline_entity_form_test/config/optional/core.entity_form_display.node.ief_test_revisions_complex.default.yml b/tests/modules/inline_entity_form_test/config/optional/core.entity_form_display.node.ief_test_revisions_complex.default.yml
new file mode 100644
index 0000000..9bbbb2a
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/optional/core.entity_form_display.node.ief_test_revisions_complex.default.yml
@@ -0,0 +1,75 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.ief_test_revisions_complex.body
+    - field.field.node.ief_test_revisions_complex.field_entity_ref_revision
+    - node.type.ief_test_revisions_complex
+  module:
+    - entity_reference_revisions
+    - inline_entity_form
+    - path
+    - text
+id: node.ief_test_revisions_complex.default
+targetEntityType: node
+bundle: ief_test_revisions_complex
+mode: default
+content:
+  body:
+    type: text_textarea_with_summary
+    weight: 31
+    settings:
+      rows: 9
+      summary_rows: 3
+      placeholder: ''
+    third_party_settings: {  }
+  created:
+    type: datetime_timestamp
+    weight: 10
+    settings: {  }
+    third_party_settings: {  }
+  field_entity_ref_revision:
+    weight: 32
+    settings:
+      form_mode: default
+      label_singular: ''
+      label_plural: ''
+      allow_new: true
+      match_operator: CONTAINS
+      override_labels: false
+      allow_existing: false
+    third_party_settings: {  }
+    type: inline_entity_form_complex
+  path:
+    type: path
+    weight: 30
+    settings: {  }
+    third_party_settings: {  }
+  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/optional/core.entity_view_display.node.ief_test_revisions_complex.default.yml b/tests/modules/inline_entity_form_test/config/optional/core.entity_view_display.node.ief_test_revisions_complex.default.yml
new file mode 100644
index 0000000..c4bb583
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/optional/core.entity_view_display.node.ief_test_revisions_complex.default.yml
@@ -0,0 +1,33 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.field.node.ief_test_revisions_complex.body
+    - field.field.node.ief_test_revisions_complex.field_entity_ref_revision
+    - node.type.ief_test_revisions_complex
+  module:
+    - entity_reference_revisions
+    - text
+    - user
+id: node.ief_test_revisions_complex.default
+targetEntityType: node
+bundle: ief_test_revisions_complex
+mode: default
+content:
+  body:
+    label: hidden
+    type: text_default
+    weight: 101
+    settings: {  }
+    third_party_settings: {  }
+  field_entity_ref_revision:
+    weight: 102
+    label: above
+    settings:
+      view_mode: default
+      link: ''
+    third_party_settings: {  }
+    type: entity_reference_revisions_entity_view
+  links:
+    weight: 100
+hidden: {  }
diff --git a/tests/modules/inline_entity_form_test/config/optional/field.field.node.ief_test_revisions_complex.field_entity_ref_revision.yml b/tests/modules/inline_entity_form_test/config/optional/field.field.node.ief_test_revisions_complex.field_entity_ref_revision.yml
new file mode 100644
index 0000000..ac005d2
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/optional/field.field.node.ief_test_revisions_complex.field_entity_ref_revision.yml
@@ -0,0 +1,27 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - field.storage.node.field_entity_ref_revision
+    - node.type.ief_test_revisions_complex
+  module:
+    - entity_reference_revisions
+id: node.ief_test_revisions_complex.field_entity_ref_revision
+field_name: field_entity_ref_revision
+entity_type: node
+bundle: ief_test_revisions_complex
+label: 'entity ref revision'
+description: ''
+required: false
+translatable: false
+default_value: {  }
+default_value_callback: ''
+settings:
+  handler: 'default:node'
+  handler_settings:
+    target_bundles:
+      ief_test_custom: ief_test_custom
+    sort:
+      field: _none
+    auto_create: false
+field_type: entity_reference_revisions
diff --git a/tests/modules/inline_entity_form_test/config/optional/field.storage.node.field_entity_ref_revision.yml b/tests/modules/inline_entity_form_test/config/optional/field.storage.node.field_entity_ref_revision.yml
new file mode 100644
index 0000000..88a0955
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/optional/field.storage.node.field_entity_ref_revision.yml
@@ -0,0 +1,19 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - entity_reference_revisions
+    - node
+id: node.field_entity_ref_revision
+field_name: field_entity_ref_revision
+entity_type: node
+type: entity_reference_revisions
+settings:
+  target_type: node
+module: entity_reference_revisions
+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/optional/node.type.ief_test_revisions_complex.yml b/tests/modules/inline_entity_form_test/config/optional/node.type.ief_test_revisions_complex.yml
new file mode 100644
index 0000000..d6f01d2
--- /dev/null
+++ b/tests/modules/inline_entity_form_test/config/optional/node.type.ief_test_revisions_complex.yml
@@ -0,0 +1,18 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - entity_reference_revisions
+    - menu_ui
+third_party_settings:
+  menu_ui:
+    available_menus:
+      - main
+    parent: 'main:'
+name: 'IEF test revisions complex'
+type: ief_test_revisions_complex
+description: ''
+help: ''
+new_revision: false
+preview_mode: 1
+display_submitted: true
