diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index b96c11952d8f81e1b9159a802c886a2cedd0b862..f8d383179accbd6e5b33898a588d02d3b88adb96 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -1185,7 +1185,11 @@ public function createDuplicate() {
     if ($entity_type->hasKey('id')) {
       $duplicate->{$entity_type->getKey('id')}->value = NULL;
     }
+    // Explicitly mark the entity as new and the default revision. A new entity
+    // is always the default revision, but that persists only until the entity
+    // is saved.
     $duplicate->enforceIsNew();
+    $duplicate->isDefaultRevision(TRUE);
 
     // Check if the entity type supports UUIDs and generate a new one if so.
     if ($entity_type->hasKey('uuid')) {
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityDuplicateTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityDuplicateTest.php
index a1b32dd60c320cd2801c64c289be51b8646bf9e1..fce299acd4855100391662c47a8ce2e6295cd4a2 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityDuplicateTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityDuplicateTest.php
@@ -44,7 +44,13 @@ public function testDuplicateNonDefaultRevision(): void {
     $duplicate_first_revision = $this->entityTestRevStorage->loadRevision($first_revision_id)->createDuplicate();
     $this->assertTrue($duplicate_first_revision->isDefaultRevision(), 'Duplicating a non-default revision creates a default revision.');
     $this->assertEquals('First Revision', $duplicate_first_revision->label());
+    $this->assertTrue($duplicate_first_revision->isNew());
+    $this->assertTrue($duplicate_first_revision->isNewRevision());
+    $this->assertTrue($duplicate_first_revision->isDefaultRevision());
     $duplicate_first_revision->save();
+    $this->assertFalse($duplicate_first_revision->isNew());
+    $this->assertFalse($duplicate_first_revision->isNewRevision());
+    $this->assertTrue($duplicate_first_revision->isDefaultRevision());
 
     $duplicate_first_revision->name = 'Updated name';
     $duplicate_first_revision->save();
@@ -52,6 +58,14 @@ public function testDuplicateNonDefaultRevision(): void {
     $this->entityTestRevStorage->resetCache();
     $duplicate_first_revision = EntityTestRev::load($duplicate_first_revision->id());
     $this->assertEquals('Updated name', $duplicate_first_revision->label());
+
+    // Also ensure the base table storage by doing an entity query for the
+    // updated name field.
+    $results = \Drupal::entityQuery('entity_test_rev')
+      ->condition('name', 'Updated name')
+      ->accessCheck(FALSE)
+      ->execute();
+    $this->assertEquals([$duplicate_first_revision->getRevisionId() => $duplicate_first_revision->id()], $results);
   }
 
 }