diff --git a/src/lib.rs b/src/lib.rs
index 30f8c280784bf42b2408f8f2116fc6e26526cc17..ed249908bfba1de226ffd6a3519e3ae27155bbc7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -81,12 +81,15 @@ impl SchemaInspector {
     /// to retrieve them from the root schemas object
     fn resolve_references(schemas: &Map<String, Value>, val: &mut Value) -> Result<(), InitError> {
         if let Some(target) = Self::extract_ref(val) {
-            *val = schemas
+            let mut resolved_schema = schemas
                 .get(&target)
                 .ok_or(InitError::ResolutionFailure(format!(
                     "{target} not found in the given schemas"
                 )))?
                 .clone();
+            // resolve any references within the resolved schema
+            Self::resolve_references(schemas, &mut resolved_schema)?;
+            *val = resolved_schema;
         }
         match val {
             Value::Object(ref mut map) => {