Ainsi désignée pour la première fois dans le catalogue du Musée Royal en 1830, la Vierge aux rochers représente la Vierge Marie venue avec Jésus recueillir saint Jean orphelin réfugié dans une grotte grâce à la protection de L'archange Uriel, agenouillé à droite.
Commandé en 1483 pour la chapelle de l'Immaculée Conception de l'église de saint François d'Assise de Milan, il fut jugé inachevé lorsque Léonard quitta cette ville en 1499. Les religieux lui substituèrent sur place en 1508 une autre version (Londres, National Gallery), due à Ambrogio et Evangelista da Predis, à qui n'avaient été initialement commandés que les panneaux latéraux avec les anges musiciens (Londres, National Gallery).
Le tableau substitue un motif particulièrement populaire à Florence à l'iconographie normalement admise par les dignitaires franciscains pour la promotion du dogme de l'Immaculée Conception : une Vierge sans l'enfant Jésus se tenant parmi les prophètes lisant les textes qui se référent à l'exemption du péché originel de la Vierge.
Dans La vierge aux rochers, Jean-Baptiste enfant, à l'abris sous les vêtements de la Vierge, vénère l'enfant Jésus qui s'ébroue dans un frais ruisseau.
Les clients milanais de Léonard doivent avoir été contrariés de la possible confusion entre les deux enfants. Dans la version tardive commandée aux Da Predis, ils ont pris soin de clairement identifier Jean-Baptiste avec sa croix et l'enfant jésus avec son auréole sainte.

|
the
Virgin of the Rocks |
![]() |

| the Virgin of the Rocks Ambro. et Evan. da Predis 1499-1508 Huile sur bois 189,5 x 120 cm National Gallery, London |
![]() |