diff --git src/wp-includes/post-template.php src/wp-includes/post-template.php
index b817ede..164e549 100644
--- src/wp-includes/post-template.php
+++ src/wp-includes/post-template.php
@@ -315,6 +315,10 @@ function get_the_content( $more_link_text = null, $strip_teaser = false, $post =
 	$content = $elements['pages'][ $page_no - 1 ];
 	if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
 		$content = explode( $matches[0], $content, 2 );
+
+		// Remove the core/more block tags now that it has been split up.
+		$content = preg_replace( '/<!-- \/?wp:more(.*?) -->/', '', $content );
+
 		if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) ) {
 			$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
 		}
diff --git tests/phpunit/tests/post/output.php tests/phpunit/tests/post/output.php
index b6c402b..02be7ff 100644
--- tests/phpunit/tests/post/output.php
+++ tests/phpunit/tests/post/output.php
@@ -175,4 +175,183 @@ EOF;
 
 		kses_remove_filters();
 	}
+
+	/**
+	 * Ensure the_content handles a More block on a singular page.
+	 *
+	 * @ticket 46471
+	 *
+	 * @group blocks
+	 */
+	public function test_the_content_should_handle_more_block_on_singular() {
+		$post_content = <<<EOF
+<!-- wp:paragraph -->
+<p>Teaser part.</p>
+<!-- /wp:paragraph -->
+
+<!-- wp:more {"customText":"Read More"} -->
+<!--more Read More-->
+<!-- /wp:more -->
+
+<!-- wp:paragraph -->
+<p>Second block.</p>
+<!-- /wp:paragraph -->
+EOF;
+
+		$post_id = self::factory()->post->create( compact( 'post_content' ) );
+
+		$expected_without_teaser = <<<EOF
+<span id="more-{$post_id}"></span>
+<p>Second block.</p>
+EOF;
+
+		$expected_with_teaser = <<<EOF
+<p>Teaser part.</p>
+<span id="more-{$post_id}"></span>
+<p>Second block.</p>
+EOF;
+
+		$this->go_to( get_permalink( $post_id ) );
+		$this->assertTrue( is_singular() );
+		$this->assertTrue( have_posts() );
+		$this->assertNull( the_post() );
+
+		// Without the teaser.
+		$actual = get_echo( 'the_content', array( null, true ) );
+		$this->assertSame( strip_ws( $expected_without_teaser ), strip_ws( $actual ) );
+
+		// With the teaser.
+		$actual = get_echo( 'the_content', array( null, false ) );
+		$this->assertSame( strip_ws( $expected_with_teaser ), strip_ws( $actual ) );
+	}
+
+	/**
+	 * Ensure the_content handles a More block when using the noteaser text tag on a singular page.
+	 *
+	 * @ticket 46471
+	 *
+	 * @group blocks
+	 */
+	public function test_the_content_should_handle_more_block_when_noteaser_on_singular() {
+		$post_content = <<<EOF
+<!-- wp:paragraph -->
+<p>Teaser part.</p>
+<!-- /wp:paragraph -->
+
+<!-- wp:more -->
+<!--more-->
+<!--noteaser-->
+<!-- /wp:more -->
+
+<!-- wp:paragraph -->
+<p>Second block.</p>
+<!-- /wp:paragraph -->
+EOF;
+
+		$post_id = self::factory()->post->create( compact( 'post_content' ) );
+
+		$expected = <<<EOF
+<span id="more-{$post_id}"></span>
+<!--noteaser-->
+<p>Second block.</p>
+EOF;
+
+		$this->go_to( get_permalink( $post_id ) );
+		$this->assertTrue( is_singular() );
+		$this->assertTrue( have_posts() );
+		$this->assertNull( the_post() );
+
+		$actual = get_echo( 'the_content', array( null, true ) );
+		$this->assertSame( strip_ws( $expected ), strip_ws( $actual ) );
+
+		$actual = get_echo( 'the_content', array( null, false ) );
+		$this->assertSame( strip_ws( $expected ), strip_ws( $actual ) );
+	}
+
+	/**
+	 * Ensure the_content displays the teaser part with a read more link
+	 * for a More block on a non-singular page.
+	 *
+	 * @ticket 46471
+	 *
+	 * @group blocks
+	 */
+	public function test_the_content_should_handle_more_block_when_non_singular() {
+		$post_content = <<<EOF
+<!-- wp:paragraph -->
+<p>Teaser part.</p>
+<!-- /wp:paragraph -->
+
+<!-- wp:more {"customText":"Read More"} -->
+<!--more Read More-->
+<!-- /wp:more -->
+
+<!-- wp:paragraph -->
+<p>Second block.</p>
+<!-- /wp:paragraph -->
+EOF;
+
+		$post_id = self::factory()->post->create( compact( 'post_content' ) );
+
+		$expected = <<<EOF
+<span id="more-{$post_id}"></span>
+<p>Second block.</p>
+EOF;
+
+		$this->go_to( home_url() );
+		$this->assertFalse( is_singular() );
+		$this->assertTrue( have_posts() );
+		$this->assertNull( the_post() );
+
+		foreach ( array( true, false ) as $strip_teaser ) {
+			$actual = get_echo( 'the_content', array( null, $strip_teaser ) );
+			$this->assertContains( 'Teaser part', $actual );
+			$this->assertContains( 'Read More</a>', $actual );
+			$this->assertNotContains( '<!--more-->', $actual );
+			$this->assertNotContains( 'wp:more', $actual );
+			$this->assertNotContains( 'wp:paragraph', $actual );
+		}
+	}
+
+	/**
+	 * Ensure the_content displays the teaser part with a read more link for a More block
+	 * when using the noteaser text tag on a non-singular page.
+	 *
+	 * @ticket 46471
+	 *
+	 * @group blocks
+	 */
+	public function test_the_content_should_handle_more_block_when_noteaser_on_non_singular() {
+		$post_content = <<<EOF
+<!-- wp:paragraph -->
+<p>Teaser part.</p>
+<!-- /wp:paragraph -->
+
+<!-- wp:more -->
+<!--more-->
+<!--noteaser-->
+<!-- /wp:more -->
+
+<!-- wp:paragraph -->
+<p>Second block.</p>
+<!-- /wp:paragraph -->
+EOF;
+
+		$post_id = self::factory()->post->create( compact( 'post_content' ) );
+
+		$this->go_to( home_url() );
+		$this->assertFalse( is_singular() );
+		$this->assertTrue( have_posts() );
+		$this->assertNull( the_post() );
+
+		foreach ( array( true, false ) as $strip_teaser ) {
+			$actual = get_echo( 'the_content', array( null, $strip_teaser ) );
+			$this->assertContains( 'Teaser part', $actual );
+			$this->assertContains( '(more&hellip;)</span></a>', $actual );
+			$this->assertNotContains( '<!--more-->', $actual );
+			$this->assertNotContains( '<!--noteaser-->', $actual ); // We placed the noteaser tag below the more tag.
+			$this->assertNotContains( 'wp:more', $actual );
+			$this->assertNotContains( 'wp:paragraph', $actual );
+		}
+	}
 }
