diff --git src/wp-includes/comment.php src/wp-includes/comment.php
index 58ffb03..9ce11a0 100644
--- src/wp-includes/comment.php
+++ src/wp-includes/comment.php
@@ -913,6 +913,12 @@ function get_page_of_comment( $comment_ID, $args = array() ) {
 		if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
 			return get_page_of_comment( $comment->comment_parent, $args );
 
+		if ( 'desc' === get_option( 'comment_order' ) ) {
+			$compare = 'after';
+		} else {
+			$compare = 'before';
+		}
+
 		$comment_args = array(
 			'type'       => $args['type'],
 			'post_id'    => $comment->comment_post_ID,
@@ -923,7 +929,7 @@ function get_page_of_comment( $comment_ID, $args = array() ) {
 			'date_query' => array(
 				array(
 					'column' => "$wpdb->comments.comment_date_gmt",
-					'before' => $comment->comment_date_gmt,
+					$compare => $comment->comment_date_gmt,
 				)
 			),
 		);
diff --git tests/phpunit/tests/comment/getPageOfComment.php tests/phpunit/tests/comment/getPageOfComment.php
index b41f649..e8c0d4e 100644
--- tests/phpunit/tests/comment/getPageOfComment.php
+++ tests/phpunit/tests/comment/getPageOfComment.php
@@ -238,4 +238,22 @@ class Tests_Comment_GetPageOfComment extends WP_UnitTestCase {
 
 		$this->assertEquals( 2, get_page_of_comment( $c1 ) );
 	}
+
+	/**
+	 * @ticket 31101
+	 */
+	public function test_should_respect_comment_order_newest() {
+		$now = time();
+
+		$p = self::factory()->post->create();
+		$c1 = self::factory()->comment->create( array( 'comment_post_ID' => $p, 'comment_date_gmt' => date( 'Y-m-d H:i:s', $now ) ) );
+		$c2 = self::factory()->comment->create( array( 'comment_post_ID' => $p, 'comment_date_gmt' => date( 'Y-m-d H:i:s', $now - 20 ) ) );
+		$c3 = self::factory()->comment->create( array( 'comment_post_ID' => $p, 'comment_date_gmt' => date( 'Y-m-d H:i:s', $now - 30 ) ) );
+
+		update_option( 'comment_order', 'desc' );
+		update_option( 'page_comments', 1 );
+		update_option( 'comments_per_page', 2 );
+
+		$this->assertEquals( 2, get_page_of_comment( $c3 ) );
+	}
 }
