diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 7c0a458..06dd979 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -433,6 +433,16 @@ public function bundle() {
   /**
    * {@inheritdoc}
    */
+  public function getBundleEntity() {
+    if ($bundle_entity_type = $this->getEntityType()->getBundleEntityType()) {
+      $bundle_storage = $this->entityTypeManager()->getStorage($bundle_entity_type);
+      return $bundle_storage->load($this->getEntityKey('bundle'));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function uuid() {
     return $this->getEntityKey('uuid');
   }
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php b/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
index 0c3f04b..d37deb2 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
@@ -23,6 +23,15 @@
 interface ContentEntityInterface extends \Traversable, FieldableEntityInterface, RevisionableInterface, TranslatableInterface {
 
   /**
+   * Gets the bundle entity of the entity.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface|null
+   *   The config entity which is the bundle of the entity, or NULL if the
+   *   entity does not have bundle entities.
+   */
+  public function getBundleEntity();
+
+  /**
    * Determines if the current translation of the entity has unsaved changes.
    *
    * If the entity is translatable only translatable fields will be checked for
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleEntityTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleEntityTest.php
new file mode 100644
index 0000000..06af5c9
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleEntityTest.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Entity;
+
+/**
+ * Tests the getBundleEntity() method.
+ *
+ * @coversDefaultClass \Drupal\Core\Entity\ContentEntityBase
+ *
+ * @group Entity
+ */
+class EntityBundleEntityTest extends EntityKernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['entity_test'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installEntitySchema('entity_test_with_bundle');
+  }
+
+  /**
+   * @covers ::getBundleEntity
+   */
+  public function testGetBundleEntity() {
+    $storage = $this->entityManager->getStorage('entity_test_bundle');
+    $bundle_entity = $storage->create([
+      'id' => 'bundle_alpha',
+      'label' => 'Alpha',
+    ]);
+    $bundle_entity->save();
+
+    $storage = $this->entityManager->getStorage('entity_test_with_bundle');
+    $content_entity = $storage->create([
+      'type' => 'bundle_alpha',
+    ]);
+    $content_entity->save();
+
+    $obtained_bundle_entity = $content_entity->getBundleEntity();
+    $this->assertEquals($bundle_entity, $obtained_bundle_entity);
+  }
+
+}
