diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index aed688d8be..ffa0ae4ed3 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1751,7 +1751,7 @@ function install_import_translations(&$install_state) {
       $operations[] = ['locale_translation_batch_fetch_import', ['drupal', $language->getId(), []]];
     }
 
-    module_load_include('fetch.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.fetch');
     $batch = [
       'operations' => $operations,
       'title' => t('Updating translations.'),
@@ -1800,7 +1800,7 @@ function _install_prepare_import($langcodes, $server_pattern) {
             'status' => 1,
           ];
           \Drupal::service('locale.project')->set($data['name'], $data);
-          module_load_include('compare.inc', 'locale');
+          \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
           // Reset project information static cache so that it uses the data
           // set above.
           locale_translation_clear_cache_projects();
diff --git a/core/includes/module.inc b/core/includes/module.inc
index 63b3abc5ef..641b678a98 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -90,7 +90,7 @@ function module_load_install($module) {
   // Make sure the installation API is available
   include_once __DIR__ . '/install.inc';
 
-  return module_load_include('install', $module);
+  return \Drupal::moduleHandler()->loadInclude($module, 'install');
 }
 
 /**
@@ -117,15 +117,22 @@ function module_load_install($module) {
  *   (optional) The base file name (without the $type extension). If omitted,
  *   $module is used; i.e., resulting in "$module.$type" by default.
  *
- * @return
+ * @return string|bool
  *   The name of the included file, if successful; FALSE otherwise.
  *
+ * @deprecated in Drupal 8.7.0, will be removed before Drupal 9.0.
+ *   Use \Drupal::moduleHandler()->loadInclude($module, $type, $name = NULL);
+ *
+ * @see https://www.drupal.org/node/2948698
+ *
  * @todo The module_handler service has a loadInclude() method which performs
  *   this same task but only for enabled modules. Figure out a way to move this
  *   functionality entirely into the module_handler while keeping the ability to
  *   load the files of disabled modules.
  */
 function module_load_include($type, $module, $name = NULL) {
+  @trigger_error("module_load_include() is deprecated in Drupal 8.7.0 and will be removed before Drupal 9.0.0. Instead,
+  you should use \Drupal::moduleHandler()->loadInclude(). See https://www.drupal.org/project/drupal/issues/697946", E_USER_DEPRECATED);
   if (!isset($name)) {
     $name = $module;
   }
diff --git a/core/includes/update.inc b/core/includes/update.inc
index d7fe942ebd..9678b59e5a 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -235,7 +235,7 @@ function update_invoke_post_update($function, &$context) {
   }
 
   list($module, $name) = explode('_post_update_', $function, 2);
-  module_load_include('php', $module, $module . '.post_update');
+  \Drupal::moduleHandler()->loadInclude( $module, 'php', $module . '.post_update');
   if (function_exists($function)) {
     try {
       $ret['results']['query'] = $function($context['sandbox']);
diff --git a/core/lib/Drupal/Core/Form/FormState.php b/core/lib/Drupal/Core/Form/FormState.php
index 8264371c83..9025b0e330 100644
--- a/core/lib/Drupal/Core/Form/FormState.php
+++ b/core/lib/Drupal/Core/Form/FormState.php
@@ -46,10 +46,11 @@ class FormState implements FormStateInterface {
    *   - files: An optional array defining include files that need to be loaded
    *     for building the form. Each array entry may be the path to a file or
    *     another array containing values for the parameters 'type', 'module' and
-   *     'name' as needed by module_load_include(). The files listed here are
-   *     automatically loaded by \Drupal::formBuilder()->getCache(). By default
-   *     the current menu router item's 'file' definition is added, if any. Use
-   *     self::loadInclude() to add include files from a form constructor.
+   *     'name' as needed by \Drupal::moduleHandler()->loadInclude(). The files
+   *     listed here are automatically loaded by
+   *     \Drupal::formBuilder()->getCache(). By default the current menu router
+   *     item's 'file' definition is added, if any. Use self::loadInclude() to
+   *     add include files from a form constructor.
    *   - form_id: Identification of the primary form being constructed and
    *     processed.
    *   - base_form_id: Identification for a base form, as declared in the form
diff --git a/core/lib/Drupal/Core/Form/FormStateInterface.php b/core/lib/Drupal/Core/Form/FormStateInterface.php
index 9a69764f19..2d637d1c61 100644
--- a/core/lib/Drupal/Core/Form/FormStateInterface.php
+++ b/core/lib/Drupal/Core/Form/FormStateInterface.php
@@ -49,11 +49,11 @@ public function setCompleteForm(array &$complete_form);
    *   $form_state->loadInclude('node', 'inc', 'node.admin');
    * @endcode
    *
-   * Use this function instead of module_load_include() from inside a form
-   * constructor or any form processing logic as it ensures that the include file
-   * is loaded whenever the form is processed. In contrast to using
-   * module_load_include() directly, this method makes sure the include file is
-   * correctly loaded also if the form is cached.
+   * Use this function instead of \Drupal::moduleHandler()->loadInclude() from
+   * inside a form constructor or any form processing logic as it ensures that
+   * the include file is loaded whenever the form is processed. In contrast to
+   * using \Drupal::moduleHandler()->loadInclude() directly, this method makes
+   * sure the include file is correctly loaded also if the form is cached.
    *
    * @param string $module
    *   The module to which the include file belongs.
@@ -67,7 +67,7 @@ public function setCompleteForm(array &$complete_form);
    *   The filepath of the loaded include file, or FALSE if the include file was
    *   not found or has been loaded already.
    *
-   * @see module_load_include()
+   * @see \Drupal::moduleHandler()->loadInclude()
    */
   public function loadInclude($module, $type, $name = NULL);
 
diff --git a/core/lib/Drupal/Core/Updater/Module.php b/core/lib/Drupal/Core/Updater/Module.php
index 4829c53807..29a694dbc9 100644
--- a/core/lib/Drupal/Core/Updater/Module.php
+++ b/core/lib/Drupal/Core/Updater/Module.php
@@ -87,7 +87,7 @@ public function getSchemaUpdates() {
     if (!self::canUpdate($this->name)) {
       return [];
     }
-    module_load_include('install', $this->name);
+    \Drupal::moduleHandler()->loadInclude($this->name,'install');
 
     if (!$updates = drupal_get_schema_versions($this->name)) {
       return [];
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 0ab227b789..f5801464a0 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -425,7 +425,7 @@ function content_translation_form_field_config_edit_form_alter(array &$form, For
   }
 
   if ($field->isTranslatable()) {
-    module_load_include('inc', 'content_translation', 'content_translation.admin');
+    \Drupal::moduleHandler()->loadInclude('content_translation', 'inc', 'content_translation.admin');
     $element = content_translation_field_sync_widget($field);
     if ($element) {
       $form['third_party_settings']['content_translation']['translation_sync'] = $element;
@@ -576,7 +576,7 @@ function content_translation_language_configuration_element_submit(array $form,
  * Implements hook_form_FORM_ID_alter() for language_content_settings_form().
  */
 function content_translation_form_language_content_settings_form_alter(array &$form, FormStateInterface $form_state) {
-  module_load_include('inc', 'content_translation', 'content_translation.admin');
+  \Drupal::moduleHandler()->loadInclude('content_translation', 'inc', 'content_translation.admin');
   _content_translation_form_language_content_settings_form_alter($form, $form_state);
 }
 
@@ -584,7 +584,7 @@ function content_translation_form_language_content_settings_form_alter(array &$f
  * Implements hook_preprocess_HOOK() for language-content-settings-table.html.twig.
  */
 function content_translation_preprocess_language_content_settings_table(&$variables) {
-  module_load_include('inc', 'content_translation', 'content_translation.admin');
+  \Drupal::moduleHandler()->loadInclude('content_translation', 'inc', 'content_translation.admin');
   _content_translation_preprocess_language_content_settings_table($variables);
 }
 
diff --git a/core/modules/locale/locale.batch.inc b/core/modules/locale/locale.batch.inc
index c1b2fd98a1..5ebbb3a7ef 100644
--- a/core/modules/locale/locale.batch.inc
+++ b/core/modules/locale/locale.batch.inc
@@ -179,7 +179,7 @@ function locale_translation_batch_fetch_import($project, $langcode, $options, &$
     if (isset($source->type)) {
       if ($source->type == LOCALE_TRANSLATION_REMOTE || $source->type == LOCALE_TRANSLATION_LOCAL) {
         $file = $source->files[LOCALE_TRANSLATION_LOCAL];
-        module_load_include('bulk.inc', 'locale');
+        \Drupal::moduleHandler()->loadInclude('locale' , 'inc', 'locale.bulk');
         $options += [
           'message' => t('Importing translation for %project.', ['%project' => $source->project]),
         ];
@@ -214,7 +214,7 @@ function locale_translation_batch_fetch_import($project, $langcode, $options, &$
  *   Batch results.
  */
 function locale_translation_batch_fetch_finished($success, $results) {
-  module_load_include('bulk.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.bulk');
   if ($success) {
     \Drupal::state()->set('locale.translation_last_checked', REQUEST_TIME);
   }
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index 3feee12c5b..40f138b999 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -85,7 +85,7 @@ function locale_translate_batch_import_files(array $options, $force = FALSE) {
  *   An array of interface translation files keyed by their URI.
  */
 function locale_translate_get_interface_translation_files(array $projects = [], array $langcodes = []) {
-  module_load_include('compare.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
   $files = [];
   $projects = $projects ? $projects : array_keys(locale_translation_get_projects());
   $langcodes = $langcodes ? $langcodes : array_keys(locale_translatable_language_list());
diff --git a/core/modules/locale/locale.fetch.inc b/core/modules/locale/locale.fetch.inc
index 1de6934473..9e69600bf7 100644
--- a/core/modules/locale/locale.fetch.inc
+++ b/core/modules/locale/locale.fetch.inc
@@ -27,7 +27,7 @@
  *   Batch definition array.
  */
 function locale_translation_batch_update_build($projects = [], $langcodes = [], $options = []) {
-  module_load_include('compare.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
   $projects = $projects ? $projects : array_keys(locale_translation_get_projects());
   $langcodes = $langcodes ? $langcodes : array_keys(locale_translatable_language_list());
   $status_options = $options;
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index d4ce174876..680e79046b 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -226,7 +226,7 @@ function locale_configurable_language_delete(ConfigurableLanguageInterface $lang
   \Drupal::service('locale.storage')->deleteTranslations(['language' => $language->id()]);
 
   // Remove interface translation files.
-  module_load_include('inc', 'locale', 'locale.bulk');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc',  'locale.bulk');
   locale_translate_delete_translation_files([], [$language->id()]);
 
   // Remove translated configuration objects.
@@ -354,7 +354,7 @@ function locale_cron() {
   // and a translatable language was set.
   // Update tasks are added to the queue here but processed by Drupal's cron.
   if ($frequency = \Drupal::config('locale.settings')->get('translation.update_interval_days') && locale_translatable_language_list()) {
-    module_load_include('translation.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.translation');
     locale_cron_fill_queue();
   }
 }
@@ -406,14 +406,14 @@ function locale_system_update(array $components) {
   // built-in support for translation imports in the installer.
   if (!drupal_installation_attempted() && locale_translatable_language_list()) {
     if (\Drupal::config('locale.settings')->get('translation.import_enabled')) {
-      module_load_include('compare.inc', 'locale');
+      \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
 
       // Update the list of translatable projects and start the import batch.
       // Only when new projects are added the update batch will be triggered.
       // Not each enabled module will introduce a new project. E.g. sub modules.
       $projects = array_keys(locale_translation_build_projects());
       if ($list = array_intersect($list, $projects)) {
-        module_load_include('fetch.inc', 'locale');
+        \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.fetch');
         // Get translation status of the projects, download and update
         // translations.
         $options = _locale_translation_default_update_options();
@@ -448,8 +448,8 @@ function locale_system_remove($components) {
   $components += ['module' => [], 'theme' => []];
   $list = array_merge($components['module'], $components['theme']);
   if ($language_list = locale_translatable_language_list()) {
-    module_load_include('compare.inc', 'locale');
-    \Drupal::moduleHandler()->loadInclude('locale', 'bulk.inc');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.bulk');
 
     // Only when projects are removed, the translation files and records will be
     // deleted. Not each disabled module will remove a project, e.g., sub
@@ -881,7 +881,7 @@ function locale_translation_file_history_delete($projects = [], $langcodes = [])
 function locale_translation_get_status($projects = NULL, $langcodes = NULL) {
   $result = [];
   $status = \Drupal::keyValue('locale.translation_status')->getAll();
-  module_load_include('translation.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale' , 'inc', 'locale.translation');
   $projects = $projects ? $projects : array_keys(locale_translation_get_projects());
   $langcodes = $langcodes ? $langcodes : array_keys(locale_translatable_language_list());
 
@@ -917,7 +917,7 @@ function locale_translation_get_status($projects = NULL, $langcodes = NULL) {
  */
 function locale_translation_status_save($project, $langcode, $type, $data) {
   // Load the translation status or build it if not already available.
-  module_load_include('translation.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.translation');
   $status = locale_translation_get_status();
   if (empty($status)) {
     $projects = locale_translation_get_projects([$project]);
diff --git a/core/modules/locale/locale.pages.inc b/core/modules/locale/locale.pages.inc
index 2f8957cc88..a8ba7a710f 100644
--- a/core/modules/locale/locale.pages.inc
+++ b/core/modules/locale/locale.pages.inc
@@ -21,7 +21,7 @@
  */
 function locale_translation_manual_status() {
   @trigger_error('locale_translation_manual_status() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. It is unused by Drupal core. Duplicate this function in your own extension if you need its behavior.', E_USER_DEPRECATED);
-  module_load_include('compare.inc', 'locale');
+  \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
 
   // Check the translation status of all translatable projects in all languages.
   // First we clear the cached list of projects. Although not strictly
diff --git a/core/modules/locale/locale.translation.inc b/core/modules/locale/locale.translation.inc
index 9d7bfd6e83..edc6ca2169 100644
--- a/core/modules/locale/locale.translation.inc
+++ b/core/modules/locale/locale.translation.inc
@@ -61,7 +61,7 @@ function locale_translation_get_projects(array $project_names = []) {
     // https://www.drupal.org/node/1777106 is a follow-up issue to make the
     // check for possible out-of-date project information more robust.
     if ($row_count == 0) {
-      module_load_include('compare.inc', 'locale');
+      \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
       // At least the core project should be in the database, so we build the
       // data if none are found.
       locale_translation_build_projects();
@@ -353,7 +353,7 @@ function locale_cron_fill_queue() {
   // For each project+language combination a number of tasks are added to
   // the queue.
   if ($updates) {
-    module_load_include('fetch.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.fetch');
     $options = _locale_translation_default_update_options();
     $queue = \Drupal::queue('locale_translation', TRUE);
 
diff --git a/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php b/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
index 5c972d1ef3..dcd70c2387 100644
--- a/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleUpdateDevelopmentReleaseTest.php
@@ -15,7 +15,7 @@ class LocaleUpdateDevelopmentReleaseTest extends BrowserTestBase {
 
   protected function setUp() {
     parent::setUp();
-    module_load_include('compare.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
     $admin_user = $this->drupalCreateUser(['administer modules', 'administer languages', 'access administration pages', 'translate interface']);
     $this->drupalLogin($admin_user);
     $this->drupalPostForm('admin/config/regional/language/add', ['predefined_langcode' => 'hu'], t('Add language'));
diff --git a/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php b/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
index 907e572c42..b860a23a17 100644
--- a/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
@@ -16,8 +16,8 @@ class LocaleUpdateTest extends LocaleUpdateBase {
    */
   protected function setUp() {
     parent::setUp();
-    module_load_include('compare.inc', 'locale');
-    module_load_include('fetch.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.fetch');
     $admin_user = $this->drupalCreateUser(['administer modules', 'administer site configuration', 'administer languages', 'access administration pages', 'translate interface']);
     $this->drupalLogin($admin_user);
     // We use German as test language. This language must match the translation
@@ -30,7 +30,7 @@ protected function setUp() {
    * Checks if a list of translatable projects gets build.
    */
   public function testUpdateProjects() {
-    module_load_include('compare.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'locale.compare');
 
     // Make the test modules look like a normal custom module. i.e. make the
     // modules not hidden. locale_test_system_info_alter() modifies the project
diff --git a/core/modules/locale/tests/src/Kernel/LocaleDeprecationsTest.php b/core/modules/locale/tests/src/Kernel/LocaleDeprecationsTest.php
index b98bc0552a..3d406d1e36 100644
--- a/core/modules/locale/tests/src/Kernel/LocaleDeprecationsTest.php
+++ b/core/modules/locale/tests/src/Kernel/LocaleDeprecationsTest.php
@@ -23,7 +23,7 @@ class LocaleDeprecationsTest extends KernelTestBase {
    * @expectedDeprecation locale_translation_manual_status() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. It is unused by Drupal core. Duplicate this function in your own extension if you need its behavior.
    */
   public function testLocaleTranslationManualStatusDeprecation() {
-    module_load_include('pages.inc', 'locale');
+    \Drupal::moduleHandler()->loadInclude('locale', 'inc', 'pages.inc');
     $this->assertNotNull(\locale_translation_manual_status());
   }
 
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 425182cac6..13afc37e55 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -721,13 +721,13 @@ function node_user_cancel($edit, UserInterface $account, $method) {
       $nids = \Drupal::entityQuery('node')
         ->condition('uid', $account->id())
         ->execute();
-      module_load_include('inc', 'node', 'node.admin');
+      \Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.admin');
       node_mass_update($nids, ['status' => 0], NULL, TRUE);
       break;
 
     case 'user_cancel_reassign':
       // Anonymize all of the nodes for this old account.
-      module_load_include('inc', 'node', 'node.admin');
+      \Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.admin');
       $vids = \Drupal::entityManager()->getStorage('node')->userRevisionIds($account);
       node_mass_update($vids, [
         'uid' => 0,
diff --git a/core/modules/system/src/Tests/Update/DbUpdatesTrait.php b/core/modules/system/src/Tests/Update/DbUpdatesTrait.php
index 8a8ae84680..18b70a1919 100644
--- a/core/modules/system/src/Tests/Update/DbUpdatesTrait.php
+++ b/core/modules/system/src/Tests/Update/DbUpdatesTrait.php
@@ -54,7 +54,7 @@ protected function applyUpdates() {
    */
   public static function includeUpdates($module, $group) {
     if ($index = \Drupal::state()->get($module . '.db_updates.' . $group)) {
-      module_load_include('inc', $module, 'update/' . $group . '_' . $index);
+      \Drupal::moduleHandler()->loadInclude($module, 'inc', $module . 'update/' . $group . '_' . $index);
     }
   }
 
diff --git a/core/modules/system/tests/src/Functional/Update/DbUpdatesTrait.php b/core/modules/system/tests/src/Functional/Update/DbUpdatesTrait.php
index 55f3a04a5a..53cd0f81df 100644
--- a/core/modules/system/tests/src/Functional/Update/DbUpdatesTrait.php
+++ b/core/modules/system/tests/src/Functional/Update/DbUpdatesTrait.php
@@ -49,7 +49,7 @@ protected function applyUpdates() {
    */
   public static function includeUpdates($module, $group) {
     if ($index = \Drupal::state()->get($module . '.db_updates.' . $group)) {
-      module_load_include('inc', $module, 'update/' . $group . '_' . $index);
+      \Drupal::moduleHandler()->loadInclude($module,'inc',  $module . 'update/' . $group . '_' . $index);
     }
   }
 
diff --git a/core/modules/tracker/src/Controller/TrackerPage.php b/core/modules/tracker/src/Controller/TrackerPage.php
index 03b077dbdd..5b29e14c46 100644
--- a/core/modules/tracker/src/Controller/TrackerPage.php
+++ b/core/modules/tracker/src/Controller/TrackerPage.php
@@ -13,7 +13,7 @@ class TrackerPage extends ControllerBase {
    * Content callback for the tracker.page route.
    */
   public function getContent() {
-    module_load_include('inc', 'tracker', 'tracker.pages');
+    \Drupal::moduleHandler()->loadInclude('tracker', 'inc', 'tracker.pages');
     return tracker_page();
   }
 
diff --git a/core/modules/tracker/src/Controller/TrackerUserRecent.php b/core/modules/tracker/src/Controller/TrackerUserRecent.php
index ff3d4b02f0..dbb4d7720d 100644
--- a/core/modules/tracker/src/Controller/TrackerUserRecent.php
+++ b/core/modules/tracker/src/Controller/TrackerUserRecent.php
@@ -16,7 +16,7 @@ class TrackerUserRecent extends ControllerBase {
    * Content callback for the tracker.users_recent_content route.
    */
   public function getContent(UserInterface $user) {
-    module_load_include('inc', 'tracker', 'tracker.pages');
+    \Drupal::moduleHandler()->loadInclude('tracker', 'inc', 'tracker.pages');
     return tracker_page($user);
   }
 
diff --git a/core/modules/tracker/src/Controller/TrackerUserTab.php b/core/modules/tracker/src/Controller/TrackerUserTab.php
index c57aff0655..6fee6c99ff 100644
--- a/core/modules/tracker/src/Controller/TrackerUserTab.php
+++ b/core/modules/tracker/src/Controller/TrackerUserTab.php
@@ -14,7 +14,7 @@ class TrackerUserTab extends ControllerBase {
    * Content callback for the tracker.user_tab route.
    */
   public function getContent(UserInterface $user) {
-    module_load_include('inc', 'tracker', 'tracker.pages');
+    \Drupal::moduleHandler()->loadInclude('tracker', 'inc', 'tracker.pages');
     return tracker_page($user);
   }
 
diff --git a/core/modules/update/tests/src/Functional/UpdateContribTest.php b/core/modules/update/tests/src/Functional/UpdateContribTest.php
index e16a3df77b..1020d9e2dd 100644
--- a/core/modules/update/tests/src/Functional/UpdateContribTest.php
+++ b/core/modules/update/tests/src/Functional/UpdateContribTest.php
@@ -292,7 +292,7 @@ public function testUpdateShowDisabledThemes() {
    * Tests updates with a hidden base theme.
    */
   public function testUpdateHiddenBaseTheme() {
-    module_load_include('compare.inc', 'update');
+    \Drupal::moduleHandler()->loadInclude('update' , 'inc', 'update.compare');
 
     // Install the subtheme.
     \Drupal::service('theme_handler')->install(['update_test_subtheme']);
diff --git a/core/modules/update/update.install b/core/modules/update/update.install
index e4294a0a9a..3ee0b5b163 100644
--- a/core/modules/update/update.install
+++ b/core/modules/update/update.install
@@ -31,7 +31,7 @@ function update_requirements($phase) {
   $requirements = [];
   if ($phase == 'runtime') {
     if ($available = update_get_available(FALSE)) {
-      module_load_include('inc', 'update', 'update.compare');
+      \Drupal::moduleHandler()->loadInclude('update', 'inc', 'update.compare');
       $data = update_calculate_project_data($available);
       // First, populate the requirements for core:
       $requirements['update_core'] = _update_requirement_check($data['drupal'], 'core');
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index 25c4d93762..a90dbb0618 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -276,7 +276,7 @@ function update_cron() {
   if ((REQUEST_TIME - $last_email_notice) > $interval) {
     // If configured time between notifications elapsed, send email about
     // updates possibly available.
-    module_load_include('inc', 'update', 'update.fetch');
+    \Drupal::moduleHandler()->loadInclude('update', 'inc', 'update.fetch');
     _update_cron_notify();
   }
 
@@ -359,7 +359,7 @@ function _update_no_data() {
  * @see \Drupal\Update\UpdateManager::getProjects()
  */
 function update_get_available($refresh = FALSE) {
-  module_load_include('inc', 'update', 'update.compare');
+  \Drupal::moduleHandler()->loadInclude('update', 'inc', 'update.compare');
   $needs_refresh = FALSE;
 
   // Grab whatever data we currently have.
diff --git a/core/modules/user/user.api.php b/core/modules/user/user.api.php
index cddcda7d30..0dd48ff461 100644
--- a/core/modules/user/user.api.php
+++ b/core/modules/user/user.api.php
@@ -43,7 +43,7 @@ function hook_user_cancel($edit, UserInterface $account, $method) {
   switch ($method) {
     case 'user_cancel_block_unpublish':
       // Unpublish nodes (current revisions).
-      module_load_include('inc', 'node', 'node.admin');
+      \Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.admin');
       $nodes = \Drupal::entityQuery('node')
         ->condition('uid', $account->id())
         ->execute();
@@ -52,7 +52,7 @@ function hook_user_cancel($edit, UserInterface $account, $method) {
 
     case 'user_cancel_reassign':
       // Anonymize nodes (current revisions).
-      module_load_include('inc', 'node', 'node.admin');
+      \Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.admin');
       $nodes = \Drupal::entityQuery('node')
         ->condition('uid', $account->id())
         ->execute();
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index badfdbe3d2..2bd1ec2a46 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -621,7 +621,7 @@ protected function rowStyleOptions() {
    * available).
    */
   protected function buildFilters(&$form, FormStateInterface $form_state) {
-    module_load_include('inc', 'views_ui', 'admin');
+    \Drupal::moduleHandler()->loadInclude('views_ui', 'inc', 'admin');
 
     $bundles = $this->bundleInfoService->getBundleInfo($this->entityTypeId);
     // If the current base table support bundles and has more than one (like user).
@@ -926,7 +926,7 @@ protected function defaultDisplayFiltersUser(array $form, FormStateInterface $fo
       // Figure out the table where $bundle_key lives. It may not be the same as
       // the base table for the view; the taxonomy vocabulary machine_name, for
       // example, is stored in taxonomy_vocabulary, not taxonomy_term_data.
-      module_load_include('inc', 'views_ui', 'admin');
+      \Drupal::moduleHandler()->loadInclude('views_ui', 'inc', 'admin');
       $fields = Views::viewsDataHelper()->fetchFields($this->base_table, 'filter');
       if (isset($fields[$this->base_table . '.' . $bundle_key])) {
         $table = $this->base_table;
diff --git a/core/scripts/generate-d6-content.sh b/core/scripts/generate-d6-content.sh
index fc4c68f96c..93df32190f 100644
--- a/core/scripts/generate-d6-content.sh
+++ b/core/scripts/generate-d6-content.sh
@@ -96,7 +96,7 @@
 
 $node_id = 0;
 $revision_id = 0;
-module_load_include('inc', 'node', 'node.pages');
+\Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.pages');
 for ($i = 0; $i < 24; $i++) {
   $uid = intval($i / 8) + 3;
   $user = user_load($uid);
diff --git a/core/scripts/generate-d7-content.sh b/core/scripts/generate-d7-content.sh
index 8b591f42b0..4c36e8bafa 100644
--- a/core/scripts/generate-d7-content.sh
+++ b/core/scripts/generate-d7-content.sh
@@ -158,7 +158,7 @@
 }
 $node_id = 0;
 $revision_id = 0;
-module_load_include('inc', 'node', 'node.pages');
+\Drupal::moduleHandler()->loadInclude('node', 'inc', 'node.pages');
 for ($i = 0; $i < 36; $i++) {
   $uid = intval($i / 8) + 3;
   $user = user_load($uid);
