diff --git a/core/modules/datetime/tests/src/Functional/DateTestBase.php b/core/modules/datetime/tests/src/Functional/DateTestBase.php
index 805ea0d4d9d4cf12ef1167e1bc8ff19094df9401..4fce222082a9bd414376766530025523e57a7390 100644
--- a/core/modules/datetime/tests/src/Functional/DateTestBase.php
+++ b/core/modules/datetime/tests/src/Functional/DateTestBase.php
@@ -97,6 +97,7 @@ protected function setUp() {
       'administer entity_test content',
       'administer entity_test form display',
       'administer content types',
+      'bypass node access',
       'administer node fields',
     ]);
     $this->drupalLogin($web_user);
diff --git a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php
index 17fca561265b2ea43c9cade7158ebd964401d9c4..85b056e6575baf163e274851bf997f055d30bfc4 100644
--- a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php
+++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php
@@ -85,6 +85,7 @@ protected function setUp(): void {
     $admin_user = $this->drupalCreateUser([
       'access content',
       'administer content types',
+      'bypass node access',
       'administer node fields',
       'administer node form display',
       'administer node display',
diff --git a/core/modules/node/node.routing.yml b/core/modules/node/node.routing.yml
index 962f21c0ccdb5fbef74d9b97415311e4c60980dd..7d3f2f3ea8ca088c69edc7b6d96ec38f41208073 100644
--- a/core/modules/node/node.routing.yml
+++ b/core/modules/node/node.routing.yml
@@ -22,7 +22,7 @@ node.add_page:
   options:
     _node_operation_route: TRUE
   requirements:
-    _node_add_access: 'node'
+    _entity_create_any_access: 'node'
 
 node.add:
   path: '/node/add/{node_type}'
@@ -30,7 +30,7 @@ node.add:
     _entity_form: 'node.default'
     _title_callback: '\Drupal\node\Controller\NodeController::addPageTitle'
   requirements:
-    _node_add_access: 'node:{node_type}'
+    _entity_create_access: 'node:{node_type}'
   options:
     _node_operation_route: TRUE
     parameters:
diff --git a/core/modules/node/node.services.yml b/core/modules/node/node.services.yml
index 25759b3be176d0d7a3d0f570d2394bfefa1f49ab..f4c70183dbb82f367e9c9da772d709a781b42400 100644
--- a/core/modules/node/node.services.yml
+++ b/core/modules/node/node.services.yml
@@ -16,6 +16,7 @@ services:
   access_check.node.add:
     class: Drupal\node\Access\NodeAddAccessCheck
     arguments: ['@entity_type.manager']
+    deprecated: The "%service_id%" service is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use _entity_create_access or _entity_create_any_access access checks instead. See https://www.drupal.org/node/2836069
     tags:
       - { name: access_check, applies_to: _node_add_access }
   access_check.node.preview:
diff --git a/core/modules/node/src/Access/NodeAddAccessCheck.php b/core/modules/node/src/Access/NodeAddAccessCheck.php
index 5a61b05d9494d8d414c9d9d712b4b68c048d6015..1829b5d54fca413ba60052299bbb3c1ff757fb0e 100644
--- a/core/modules/node/src/Access/NodeAddAccessCheck.php
+++ b/core/modules/node/src/Access/NodeAddAccessCheck.php
@@ -12,6 +12,11 @@
  * Determines access to for node add pages.
  *
  * @ingroup node_access
+ *
+ * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use
+ *   _entity_create_access or _entity_create_any_access access checks instead.
+ *
+ * @see https://www.drupal.org/node/2836069
  */
 class NodeAddAccessCheck implements AccessInterface {
 
diff --git a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
index 05360296d84c08359b33685aae6f07107cd04094..d003f0651576501c8113154202539ca0633e04da 100644
--- a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
+++ b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php
@@ -38,6 +38,7 @@ protected function setUp(): void {
     $this->contentAdminUser = $this->drupalCreateUser([
       'access content',
       'administer content types',
+      'bypass node access',
       'administer menu',
     ]);
 
diff --git a/core/modules/node/tests/src/Functional/NodeCreationTest.php b/core/modules/node/tests/src/Functional/NodeCreationTest.php
index 5184c20bc28ec4deb4a271924314647d85da4937..2cbb0fd3c4ba0f566dbcbf82600e4623a0949c08 100644
--- a/core/modules/node/tests/src/Functional/NodeCreationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeCreationTest.php
@@ -108,6 +108,13 @@ public function testNodeCreation() {
     $this->drupalLogin($admin_user);
     $this->drupalGet('node/add/page');
     $this->assertSession()->fieldNotExists('edit-revision', NULL);
+
+    // Check that a user with administer content types permission is not
+    // allowed to create content.
+    $content_types_admin = $this->drupalCreateUser(['administer content types']);
+    $this->drupalLogin($content_types_admin);
+    $this->drupalGet('node/add/page');
+    $this->assertSession()->statusCodeEquals(403);
   }
 
   /**
diff --git a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
index fbfb37979404a34e99c4ffa4b3f8b40f9d5bdb4a..07dd0af2a552311c75b60bdb8724fc8c3e200bdf 100644
--- a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
+++ b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php
@@ -59,6 +59,7 @@ protected function setUp(): void {
 
     $admin_permissions = [
       'administer content types',
+      'bypass node access',
       'administer node fields',
       'administer languages',
       'administer site configuration',
diff --git a/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php b/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php
index baad8c5309d907d726422d0611870729ec2d7d16..65539ecb6dcf352fb78d8ba7ae99719a521993ea 100644
--- a/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php
+++ b/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php
@@ -109,6 +109,7 @@ public function testPageCacheTags() {
       'node:' . $node_1->id(),
       'user:' . $author_1->id(),
       'config:filter.format.basic_html',
+      'config:node_type_list',
       'config:color.theme.bartik',
       'config:system.menu.account',
       'config:system.menu.tools',
@@ -150,6 +151,7 @@ public function testPageCacheTags() {
       'user:' . $author_2->id(),
       'config:color.theme.bartik',
       'config:filter.format.full_html',
+      'config:node_type_list',
       'config:system.menu.account',
       'config:system.menu.tools',
       'config:system.menu.footer',