diff --git a/tools/bazel.rc b/tools/bazel.rc
index fcbe9337b9f6555bdec605be7b5dd52d17302be9..7348c7488ebbb33ef637a36075c633eb168ae207 100644
--- a/tools/bazel.rc
+++ b/tools/bazel.rc
@@ -12,6 +12,9 @@ build:opt --copt=-Wframe-larger-than=16384
 
 build:dbg --compilation_mode=dbg
 
+build:windows_opt --compilation_mode=opt
+build:windows_dbg --compilation_mode=dbg
+
 build:asan --strip=never
 build:asan --copt=-fsanitize=address
 build:asan --copt=-O0
diff --git a/tools/internal_ci/windows/grpc_bazel_rbe_dbg.cfg b/tools/internal_ci/windows/grpc_bazel_rbe_dbg.cfg
index 74e5ad61487e6eeb6e1e82ee75121a1127a4de52..b720e10f0dbcb21a2f5ab07ef74f7df3295aaa89 100644
--- a/tools/internal_ci/windows/grpc_bazel_rbe_dbg.cfg
+++ b/tools/internal_ci/windows/grpc_bazel_rbe_dbg.cfg
@@ -34,8 +34,7 @@ bazel_setting {
 env_vars {
   # flags will be passed to bazel invocation by bazel_rbe.bat
   key: "BAZEL_FLAGS"
-  # TODO(jtattermusch): add --config=dbg once that works
-  value: "--cache_test_results=no"
+  value: "--cache_test_results=no --config=windows_dbg"
 }
 
 env_vars {
diff --git a/tools/internal_ci/windows/grpc_bazel_rbe_opt.cfg b/tools/internal_ci/windows/grpc_bazel_rbe_opt.cfg
index 99b60c4c5ab306e2f398134e12278729b31a1b34..7f6bd4f7b3fdbf99075cda5efc8eac43c646463a 100644
--- a/tools/internal_ci/windows/grpc_bazel_rbe_opt.cfg
+++ b/tools/internal_ci/windows/grpc_bazel_rbe_opt.cfg
@@ -34,7 +34,7 @@ bazel_setting {
 env_vars {
   # flags will be passed to bazel invocation by bazel_rbe.bat
   key: "BAZEL_FLAGS"
-  value: "--cache_test_results=no --config=opt"
+  value: "--cache_test_results=no --config=windows_opt"
 }
 env_vars {
   key: "UPLOAD_TEST_RESULTS"
diff --git a/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_dbg.cfg b/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_dbg.cfg
index a682888c7a3818251c36d27379876b418f2f9b35..71470d4854487342da5d787478efca39b2f9998d 100644
--- a/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_dbg.cfg
+++ b/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_dbg.cfg
@@ -34,6 +34,5 @@ bazel_setting {
 env_vars {
   # flags will be passed to bazel invocation by bazel_rbe.bat
   key: "BAZEL_FLAGS"
-  # TODO(jtattermusch): add --config=dbg once that works
-  value: ""
+  value: " --config=windows_dbg"
 }
diff --git a/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_opt.cfg b/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_opt.cfg
index 027670096fcee77f6c62798735085e04f16ed974..120e14968082e35f4099a08f3603185fc7ca76bc 100644
--- a/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_opt.cfg
+++ b/tools/internal_ci/windows/pull_request/grpc_bazel_rbe_opt.cfg
@@ -34,5 +34,5 @@ bazel_setting {
 env_vars {
   # flags will be passed to bazel invocation by bazel_rbe.bat
   key: "BAZEL_FLAGS"
-  value: "--config=opt"
+  value: "--config=windows_opt"
 }
diff --git a/tools/remote_build/windows.bazelrc b/tools/remote_build/windows.bazelrc
index e82cdd2c61f866e825daefab7f494ad4419b0fe8..196f99fe68ee919f600eb761f726f8a432afbb78 100644
--- a/tools/remote_build/windows.bazelrc
+++ b/tools/remote_build/windows.bazelrc
@@ -1,5 +1,9 @@
 startup --host_jvm_args=-Dbazel.DigestFunction=SHA256
 
+# TODO(jtattermusch): Currently building with --compilation_mode=dbg is broken on Windows RBE
+# so we need to explicitly override it to use fastbuild.
+build:windows_dbg --compilation_mode=fastbuild
+
 build --remote_cache=grpcs://remotebuildexecution.googleapis.com
 build --remote_executor=grpcs://remotebuildexecution.googleapis.com