diff --git a/core/modules/block_place/src/Plugin/DisplayVariant/PlaceBlockPageVariant.php b/core/modules/block_place/src/Plugin/DisplayVariant/PlaceBlockPageVariant.php
index eaef409..a509568 100644
--- a/core/modules/block_place/src/Plugin/DisplayVariant/PlaceBlockPageVariant.php
+++ b/core/modules/block_place/src/Plugin/DisplayVariant/PlaceBlockPageVariant.php
@@ -99,6 +99,13 @@ public function build() {
       if ($destination) {
         $query['destination'] = $destination;
       }
+      // If there are blocks in the region, we want a weight one less so the
+      // newly placed block is on top.
+      if (!empty($build[$region])) {
+        $first_block_render_array = reset($build[$region]);
+        $lowest_weight = isset($first_block_render_array['#weight']) ? $first_block_render_array['#weight'] : 0;
+        $query['weight'] = $lowest_weight - 1;
+      }
       $title = $this->t('Place block<span class="visually-hidden"> in the %region region</span>', ['%region' => $region_name]);
       $operations['block_description'] = [
         '#type' => 'inline_template',
