diff --git a/lib/modules/manager/npm/__fixtures__/inputs/02.json b/lib/modules/manager/npm/__fixtures__/inputs/02.json
index d17132e5db5831ba0a338d9db0e4c7c538017a48..024a963584e16c19a32efa1ffd678c20af9416c8 100644
--- a/lib/modules/manager/npm/__fixtures__/inputs/02.json
+++ b/lib/modules/manager/npm/__fixtures__/inputs/02.json
@@ -13,6 +13,11 @@
     "@babel/core": "7.0.0",
     "config": "1.21.0"
   },
+  "pnpm": {
+    "overrides": {
+      "express>cookie": "0.7.0"
+    }
+  },
   "homepage": "https://keylocation.sg",
   "keywords": [
     "Key Location",
diff --git a/lib/modules/manager/npm/extract/common/package-file.ts b/lib/modules/manager/npm/extract/common/package-file.ts
index 03882c1b172bdb2ef5a6c7b952c191fbd6f1a4f0..b81fbf137fbdecd0356d067aa65b06be8f73c005 100644
--- a/lib/modules/manager/npm/extract/common/package-file.ts
+++ b/lib/modules/manager/npm/extract/common/package-file.ts
@@ -84,19 +84,26 @@ export function extractPackageJson(
               ),
             );
           } else if (depType === 'pnpm' && depName === 'overrides') {
+            // pnpm overrides
+            // https://pnpm.io/package_json#pnpmoverrides
             for (const [overridesKey, overridesVal] of Object.entries(
               val as unknown as NpmPackageDependency,
             )) {
               if (is.string(overridesVal)) {
+                // Newer flat syntax: `parent>parent>child`
+                const packageName = overridesKey.split('>').pop()!;
                 dep = {
                   depName: overridesKey,
+                  packageName,
                   depType: 'pnpm.overrides',
-                  ...extractDependency(depName, overridesKey, overridesVal),
+                  ...extractDependency(depName, packageName, overridesVal),
                 };
                 setNodeCommitTopic(dep);
+                // TODO: Is this expected? It's always 'overrides'.
                 dep.prettyDepType = depTypes[depName];
                 deps.push(dep);
               } else if (is.object(overridesVal)) {
+                // Older nested object syntax: `parent: { parent: { child: version } }`
                 deps.push(
                   ...extractOverrideDepsRec(
                     [overridesKey],
diff --git a/lib/modules/manager/npm/extract/index.spec.ts b/lib/modules/manager/npm/extract/index.spec.ts
index cd9de9df4432518acb02d267087d719dde60f8a0..715692c11896e8448d8e70aba6a1d1426cc09aea 100644
--- a/lib/modules/manager/npm/extract/index.spec.ts
+++ b/lib/modules/manager/npm/extract/index.spec.ts
@@ -1052,6 +1052,14 @@ describe('modules/manager/npm/extract/index', () => {
               depType: 'dependencies',
               prettyDepType: 'dependency',
             },
+            {
+              currentValue: '0.7.0',
+              datasource: 'npm',
+              depName: 'express>cookie',
+              packageName: 'cookie',
+              depType: 'pnpm.overrides',
+              prettyDepType: 'overrides',
+            },
           ],
           extractedConstraints: {},
           managerData: {