diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
index 955d59e..bc37704 100644
--- src/wp-includes/class-wp-customize-manager.php
+++ src/wp-includes/class-wp-customize-manager.php
@@ -1381,6 +1381,32 @@ final class WP_Customize_Manager {
 				}
 			}
 
+			// Translate the parent post symbol to an ID and assign it to the post_parent field.
+			$post_relations = array();
+			foreach ( array_keys( $posts ) as $post_symbol ) {
+				if ( ! empty( $posts[ $post_symbol ]['parent'] )
+					&& preg_match( '/^{{(?P<symbol>.+)}}$/', $posts[ $post_symbol ]['parent'], $matches ) ) {
+					$post_relations[] = array(
+						'post_id'            => $posts[ $post_symbol ]['ID'],
+						'post_symbol'        => $post_symbol,
+						'parent_post_symbol' => $matches['symbol'],
+					);
+				}
+			}
+			foreach ( $post_relations as $relation ) {
+				$post_id            = $relation['post_id'];
+				$post_symbol        = $relation['post_symbol'];
+				$parent_post_symbol = $relation['parent_post_symbol'];
+
+				if ( isset( $posts[ $parent_post_symbol ]['ID'] ) ) {
+					$posts[ $post_symbol ]['post_parent'] = $posts[ $parent_post_symbol ]['ID'];
+					wp_update_post( array(
+						'ID'          => $post_id,
+						'post_parent' => $posts[ $post_symbol ]['post_parent'],
+					) );
+				}
+			}
+
 			$starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, wp_list_pluck( $posts, 'ID' ) );
 		}
 
diff --git src/wp-includes/theme.php src/wp-includes/theme.php
index 2ee66fb..72ed4da 100644
--- src/wp-includes/theme.php
+++ src/wp-includes/theme.php
@@ -2175,6 +2175,7 @@ function get_theme_starter_content() {
 								'comment_status',
 								'thumbnail',
 								'template',
+								'parent',
 							)
 						);
 					} elseif ( is_string( $item ) && ! empty( $core_content[ $type ][ $item ] ) ) {
diff --git tests/phpunit/tests/customize/manager.php tests/phpunit/tests/customize/manager.php
index 1c1814b..fcd6e56 100644
--- tests/phpunit/tests/customize/manager.php
+++ tests/phpunit/tests/customize/manager.php
@@ -741,6 +741,70 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase {
 	}
 
 	/**
+	 * Test import_theme_starter_content() should support post_parent.
+	 *
+	 * @covers WP_Customize_Manager::import_theme_starter_content()
+	 * @ticket 40807
+	 */
+	public function test_import_theme_starter_content_should_support_post_parent() {
+		wp_set_current_user( self::$admin_user_id );
+
+		global $wp_customize;
+		$wp_customize = new WP_Customize_Manager();
+
+		$starter_content_config = array(
+			'posts' => array(
+				'animal' => array(
+					'post_type'  => 'page',
+					'post_title' => 'Animal',
+				),
+				'bird'   => array(
+					'post_type'  => 'page',
+					'post_title' => 'Bird',
+					'parent'     => '{{animal}}',
+				),
+				'owl'    => array(
+					'post_type'  => 'page',
+					'post_title' => 'Owl',
+					'parent'     => '{{birds}}', // Non-existing post symbol that should result in post_parent as 0.
+				),
+				'salmon' => array(
+					'post_type'  => 'page',
+					'post_title' => 'Salmon',
+					'parent'     => '{{fish}}',
+				),
+				/* It shouldn't matter if the parent is defined after the child */
+				'fish'   => array(
+					'post_type'  => 'page',
+					'post_title' => 'Fish',
+					'parent'     => '{{animal}}',
+				),
+			),
+		);
+
+		add_theme_support( 'starter-content', $starter_content_config );
+		$this->assertEmpty( $wp_customize->unsanitized_post_values() );
+		$wp_customize->import_theme_starter_content();
+		$changeset_values = $wp_customize->unsanitized_post_values();
+
+		$posts_by_name = array();
+		foreach ( $changeset_values['nav_menus_created_posts'] as $post_id ) {
+			$post = get_post( $post_id );
+			$post_name = $post->post_name;
+			if ( empty( $post_name ) ) {
+				$post_name = get_post_meta( $post->ID, '_customize_draft_post_name', true );
+			}
+			$posts_by_name[ $post_name ] = $post->ID;
+		}
+
+		$this->assertSame( $posts_by_name['animal'], get_post_field( 'post_parent', $posts_by_name['bird'] ) );
+		$this->assertSame( $posts_by_name['animal'], get_post_field( 'post_parent', $posts_by_name['fish'] ) );
+		$this->assertSame( $posts_by_name['fish'], get_post_field( 'post_parent', $posts_by_name['salmon'] ) );
+		$this->assertSame( 0, get_post_field( 'post_parent', $posts_by_name['animal'] ) );
+		$this->assertSame( 0, get_post_field( 'post_parent', $posts_by_name['owl'] ) );
+	}
+
+	/**
 	 * Test WP_Customize_Manager::customize_preview_init().
 	 *
 	 * @ticket 30937
