diff --git a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
index 22b9123..3e71e56 100644
--- a/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
+++ b/core/lib/Drupal/Core/Entity/Query/Sql/Condition.php
@@ -43,7 +43,7 @@ public function compile($conditionContainer) {
         // Add the SQL query to the object before calling this method again.
         $sql_condition->sqlQuery = $sql_query;
         $condition['field']->compile($sql_condition);
-        $sql_query->condition($sql_condition);
+        $conditionContainer->condition($sql_condition);
       }
       else {
         $type = strtoupper($this->conjunction) == 'OR' || $condition['operator'] == 'IS NULL' ? 'LEFT' : 'INNER';
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryTest.php b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
index 6efc67a..e5d738f 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
@@ -41,6 +41,13 @@ class EntityQueryTest extends EntityUnitTestBase {
   protected $factory;
 
   /**
+   * A list of bundle machine names created for this test.
+   *
+   * @var string[]
+   */
+  protected $bundles;
+
+  /**
    * Field name for the greetings field.
    *
    * @var string
@@ -133,6 +140,7 @@ protected function setUp() {
       }
       $entity->save();
     }
+    $this->bundles = $bundles;
     $this->figures = $figures;
     $this->greetings = $greetings;
     $this->factory = \Drupal::service('entity.query');
@@ -480,6 +488,34 @@ public function testCount() {
      $this->assertFalse($count);
   }
 
+  /**
+   * Tests that nested condition groups work as expected.
+   */
+  public function testNestedConditionGroups() {
+    // Query for all entities of the first bundle that have either a red
+    // triangle as a figure or the Turkish greeting as a greeting.
+    $query = $this->factory->get('entity_test_mulrev');
+
+    $first_and = $query->andConditionGroup()
+      ->condition($this->figures . '.color', 'red')
+      ->condition($this->figures . '.shape', 'triangle');
+    $second_and = $query->andConditionGroup()
+      ->condition($this->greetings . '.value', 'merhaba')
+      ->condition($this->greetings . '.format', 'format-tr');
+
+    $or = $query->orConditionGroup()
+      ->condition($first_and)
+      ->condition($second_and);
+
+    $this->queryResults = $query
+      ->condition($or)
+      ->condition('type', reset($this->bundles))
+      ->sort('id')
+      ->execute();
+
+    $this->assertResult(6, 14);
+  }
+
   protected function assertResult() {
     $assert = array();
     $expected = func_get_args();
