diff --git a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js
index 14e388ca6ace298d1fa4cb17ffe0d4bc7131f358..1f4ed1d7feb523cffee35f245b7dab06da4f38fa 100644
--- a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js
+++ b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.es6.js
@@ -7,23 +7,12 @@
  */
 
 (($) => {
-  // Get core version of the _focusTabbable method.
-  const oldFocusTabbable = $.ui.dialog._proto._focusTabbable;
-
   $.widget('ui.dialog', $.ui.dialog, {
-    // Override core override of jQuery UI's `_focusTabbable()` so that
+    // Override core override of jQuery UI's `_allowInteraction()` so that
     // CKEditor 5 in modals can work as expected.
-    _focusTabbable() {
-      // When the focused element is a CKEditor 5 instance, disable jQuery UI
-      // focus trap and delegate focus trap to CKEditor 5.
-      const hasFocus = this._focusedElement
-        ? this._focusedElement.get(0)
-        : null;
-      // In case the element is a CKEditor 5 instance, do not change focus
-      // management.
-      if (!(hasFocus && hasFocus.ckeditorInstance)) {
-        oldFocusTabbable.call(this);
-      }
+    // @see https://api.jqueryui.com/dialog/#method-_allowInteraction
+    _allowInteraction(event) {
+      return event.target.classList.contains('ck') || this._super(event);
     },
   });
 })(jQuery);
diff --git a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js
index 355e776e755b563d202b2dde30429f38b7f1fcfa..e0b9531cab53aefbf5ed7443a3161d64a23cbcbb 100644
--- a/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js
+++ b/core/modules/ckeditor5/js/ckeditor5.dialog.fix.js
@@ -6,14 +6,9 @@
 **/
 
 ($ => {
-  const oldFocusTabbable = $.ui.dialog._proto._focusTabbable;
   $.widget('ui.dialog', $.ui.dialog, {
-    _focusTabbable() {
-      const hasFocus = this._focusedElement ? this._focusedElement.get(0) : null;
-
-      if (!(hasFocus && hasFocus.ckeditorInstance)) {
-        oldFocusTabbable.call(this);
-      }
+    _allowInteraction(event) {
+      return event.target.classList.contains('ck') || this._super(event);
     }
 
   });
diff --git a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php
index 1758b4014092d359fda11ab3c7e3e2e2dba68953..9f2f97536ae69bd8ea9f3c217642dbf125815019 100644
--- a/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php
+++ b/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5DialogTest.php
@@ -71,10 +71,6 @@ function (ConstraintViolation $v) {
     // Then press the button to add a link.
     $this->pressEditorButton('Link');
 
-    // @todo Un-skip this test when
-    //   https://www.drupal.org/project/drupal/issues/3301631 is resolved.
-    $this->markTestSkipped('Test skipped due to regression in CKEditor 35.0.0.');
-
     $link_url = '/ckeditor5_test/dialog';
     $input = $assert_session->waitForElementVisible('css', '.ck-balloon-panel input.ck-input-text');
     // Make sure the input field can have focus and we can type into it.