diff --git a/changelog.d/13258.misc b/changelog.d/13258.misc
new file mode 100644
index 0000000000000000000000000000000000000000..a187c46aa6095d324a45e786fb9d935243dd6f9f
--- /dev/null
+++ b/changelog.d/13258.misc
@@ -0,0 +1 @@
+Fix spurious warning when fetching state after a missing prev event.
diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py
index 766d9849f50808b3949e841d52c7fd2f54f3f1bf..e4a5b64d10b6d219aee426cb5435efefc2a0eec8 100644
--- a/synapse/handlers/federation_event.py
+++ b/synapse/handlers/federation_event.py
@@ -1037,6 +1037,9 @@ class FederationEventHandler:
         # XXX: this doesn't sound right? it means that we'll end up with incomplete
         #   state.
         failed_to_fetch = desired_events - event_metadata.keys()
+        # `event_id` could be missing from `event_metadata` because it's not necessarily
+        # a state event. We've already checked that we've fetched it above.
+        failed_to_fetch.discard(event_id)
         if failed_to_fetch:
             logger.warning(
                 "Failed to fetch missing state events for %s %s",