diff --git a/core/modules/block/js/block.js b/core/modules/block/js/block.js
index b9fced18944963ffe39541dd1ab117014eebb5db..f276527365591e9dd1b316ef9d5303a37ab63857 100644
--- a/core/modules/block/js/block.js
+++ b/core/modules/block/js/block.js
@@ -197,14 +197,21 @@
           // Make our new row and select field.
           var row = $(this).closest('tr');
           var select = $(this);
-
           // Find the correct region and insert the row as the last in the
           // region.
-          table.find('.region-' + select[0].value + '-message').nextUntil('.region-message').eq(-1).before(row);
-
+          tableDrag.rowObject = new tableDrag.row(row[0]);
+          var region_message = table.find('.region-' + select[0].value + '-message');
+          var region_items = region_message.nextUntil('.region-message, .region-title');
+          if (region_items.length) {
+            region_items.last().after(row);
+          }
+          // We found that region_message is the last row.
+          else {
+            region_message.after(row);
+          }
           updateBlockWeights(table, select[0].value);
           // Modify empty regions with added or removed fields.
-          checkEmptyRegions(table, row);
+          checkEmptyRegions(table, tableDrag.rowObject);
           // Update last placed block indication.
           updateLastPlaced(table, row);
           // Show unsaved changes warning.