 core/lib/Drupal/Core/Entity/ContentEntityBase.php    | 14 +++++++++++++-
 .../Core/Field/Plugin/Field/FieldType/UuidItem.php   | 20 +++++++++++++++++---
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 40da4b8..1e17e66 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -332,7 +332,19 @@ public function bundle() {
    * {inheritdoc}
    */
   public function uuid() {
-    return $this->getEntityKey('uuid');
+    $uuid = $this->getEntityKey('uuid');
+    if (empty($uuid) && $this->getEntityType()->hasKey('uuid')) {
+      // Generate a UUID.
+      $uuid_service = \Drupal::service('uuid');
+      $uuid = $uuid_service->generate();
+
+      // Set the value.
+      $this->set($this->getEntityType()->getKey('uuid'), $uuid);
+
+      // Update the ::getEntityKey() static cache.
+      $this->entityKeys['uuid'] = $uuid;
+    }
+    return $uuid;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
index e787029..09b21be 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
@@ -36,9 +36,23 @@ public static function defaultStorageSettings() {
    * {@inheritdoc}
    */
   public function applyDefaultValue($notify = TRUE) {
-    // Default to one field item with a generated UUID.
-    $uuid = \Drupal::service('uuid');
-    $this->setValue(array('value' => $uuid->generate()), $notify);
+    // Default to one field item without a generated UUID. Actually generate a
+    // UUID in ::preSave().
+    $this->setValue(array('value' => ''), $notify);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function preSave() {
+    parent::preSave();
+
+    if ($this->value === '') {
+      $uuid = \Drupal::service('uuid');
+      $this->value = $uuid->generate();
+    }
+
     return $this;
   }
 
