diff --git a/lib/ProgressPlugin.js b/lib/ProgressPlugin.js
--- a/lib/ProgressPlugin.js
+++ b/lib/ProgressPlugin.js
@@ -531,15 +531,14 @@ class ProgressPlugin {
 			}
 		});
 		interceptHook(compiler.cache.hooks.endIdle, 0.01, "cache", "end idle");
-		compiler.hooks.initialize.intercept({
+		compiler.hooks.beforeRun.intercept({
 			name: "ProgressPlugin",
 			call() {
 				handler(0, "");
 			}
 		});
-		interceptHook(compiler.hooks.initialize, 0.01, "setup", "initialize");
-		interceptHook(compiler.hooks.beforeRun, 0.02, "setup", "before run");
-		interceptHook(compiler.hooks.run, 0.03, "setup", "run");
+		interceptHook(compiler.hooks.beforeRun, 0.01, "setup", "before run");
+		interceptHook(compiler.hooks.run, 0.02, "setup", "run");
 		interceptHook(compiler.hooks.watchRun, 0.03, "setup", "watch run");
 		interceptHook(
 			compiler.hooks.normalModuleFactory,

diff --git a/test/ProgressPlugin.test.js b/test/ProgressPlugin.test.js
--- a/test/ProgressPlugin.test.js
+++ b/test/ProgressPlugin.test.js
@@ -37,16 +37,17 @@ const createSimpleCompiler = progressOptions => {
 		entry: "./a.js",
 		infrastructureLogging: {
 			debug: /Progress/
-		}
+		},
+		plugins: [
+			new webpack.ProgressPlugin({
+				activeModules: true,
+				...progressOptions
+			})
+		]
 	});
 
 	compiler.outputFileSystem = createFsFromVolume(new Volume());
 
-	new webpack.ProgressPlugin({
-		activeModules: true,
-		...progressOptions
-	}).apply(compiler);
-
 	return compiler;
 };
 
@@ -115,6 +116,15 @@ describe("ProgressPlugin", function () {
 		nanTest(() => createMultiCompiler(undefined, { parallelism: 1 }))
 	);
 
+	it("should start print only on call run/watch", done => {
+		const compiler = createSimpleCompiler();
+
+		const logs = getLogs(stderr.toString());
+		expect(logs.join("")).toHaveLength(0);
+
+		compiler.close(done);
+	});
+
 	it("should print profile information", () => {
 		const compiler = createSimpleCompiler({
 			profile: true

fix output of ProgressPlugin
> Please then keep the conversation consistent, the problem described above has nothing to do with `ProgressPlugin`. Even if it has anything to do with it, this is a transitive effect of the problem, so let's find out what you want to get and what happens now. What is the problem?

@alexander-akait ProgressPlugin starts printing output before we call `run` or `watch` this caused confusion into thinking compilation has started early. 

we also have suspicions that "occasionally" it does indeed start and continue without calling `.run/watch` but no proof on that yet, we will try to rule it out.

_Originally posted by @serkanyersen in https://github.com/webpack/webpack/issues/12481#issuecomment-767095046_

<!-- identifier: inactive-warning -->

**This issue had no activity for at least three months.**

It's subject to automatic issue closing if there is no activity in the next 15 days.
bump
test/ProgressPlugin.test.js