diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 4a0b2a96a..682a64748 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -672,7 +672,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
             except ArgumentParsingError as exc:
                 if self._is_typing_optional(param.annotation):
                     view.index = previous
-                    return None
+                    return None if param.required else await param.get_default(ctx)
                 else:
                     raise exc
         view.previous = previous