diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
index b5ba071..95887ac 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
@@ -505,6 +505,23 @@
             .putAll(moduleOverrides)
             .putAll(commandOverrides)
             .buildKeepingLast();
+    for (var entry : overrides.entrySet()) {
+      var moduleName = entry.getKey();
+      if (!(entry.getValue() instanceof SingleVersionOverride svo)
+          || !module.getDeps().containsKey(moduleName)) {
+        continue;
+      }
+      var depVersion = module.getDeps().get(moduleName).version();
+      if (!depVersion.isEmpty() && svo.version().compareTo(depVersion) < 0) {
+        throw errorf(
+            Code.BAD_MODULE,
+            "module '%s' is overridden to use version '%s', which is lower than the version '%s' "
+                + "requested by the root module",
+            moduleName,
+            svo.version(),
+            depVersion);
+      }
+    }
 
     // Check that overrides don't contain the root module itself.
     ModuleOverride rootOverride = overrides.get(module.getName());
diff --git a/src/test/py/bazel/bzlmod/bazel_overrides_test.py b/src/test/py/bazel/bzlmod/bazel_overrides_test.py
index 805468f..fa18235 100644
--- a/src/test/py/bazel/bzlmod/bazel_overrides_test.py
+++ b/src/test/py/bazel/bzlmod/bazel_overrides_test.py
@@ -108,7 +108,7 @@
     self.ScratchFile(
         'MODULE.bazel',
         [
-            'bazel_dep(name = "aaa", version = "1.1")',
+            'bazel_dep(name = "aaa")',
             'bazel_dep(name = "bbb", version = "1.1")',
             # Both main and bbb@1.1 has to depend on the locally patched aaa@1.0
             'single_version_override(',
@@ -125,6 +125,26 @@
     self.assertIn('main function => bbb@1.1', stdout)
     self.assertIn('bbb@1.1 => aaa@1.0 (locally patched)', stdout)
 
+  def testSingleVersionOverrideVersionTooLow(self):
+    self.writeMainProjectFiles()
+    self.ScratchFile(
+        'MODULE.bazel',
+        [
+            'bazel_dep(name = "aaa", version = "1.1")',
+            'single_version_override(',
+            '  module_name = "aaa",',
+            '  version = "1.0",',
+            ')',
+        ],
+    )
+    exit_code, _, stderr = self.RunBazel(['mod', 'deps'], allow_failure=True)
+    self.AssertNotExitCode(exit_code, 0, stderr)
+    self.assertIn(
+        "ERROR: module 'aaa' is overridden to use version '1.0', which is lower"
+        " than the version '1.1' requested by the root module",
+        stderr,
+    )
+
   def testRegistryOverride(self):
     self.writeMainProjectFiles()
     another_registry = BazelRegistry(
