玄武湖的形成主要有地质构造和古河道改道两大原因。玄武湖附近的钟山(紫金山)逆掩断层、天堡城断层、富贵山断层、太平门断层的四次大断裂现象致使玄武湖低地形成。前三次断层与玄武湖低地的形成是间接关系,而第四次则与玄武湖的形成有了直接关系。太平门断层的发生,将其西侧下投,使玄武湖低地成立,从而才可以蓄水成湖。因此,毕庆昌、王建翔两位学者认为玄武湖是天然湖泊,它的形成时间应在第三纪中。而南京师范大学李立文先生则认为玄武湖的成因必须从地质构造、岩性、人为影响等方面综合分析。如玄武湖的湖区位于宁镇、宁芜地区构造的分界线,处于钟山—幕府山复向斜开的喇叭口端,断横交错,为一破碎带。在破碎带内又有火层岩侵入体,经过风化剥蚀,发育成河流,是为原始湖盆。由于泥沙的积淤,在历经千百万年的侵蚀之后,渐渐被溶蚀为一处低洼积水之地,而形成湖泊。湖水向四周浪击侵蚀,不断扩大水域,而最终孕育成为玄武湖。另外,新石器时代玄武湖区域为南京古河道的所在区域,由于长江的主流线向西摆动,古秦淮河道所在之处成为淤涨地区,古秦淮河道逐渐淤塞,使得地面留下了汊河、废弃河道、湖沼池塘等遗迹,而玄武湖就是其中之一,这也是玄武湖能够形成的原因之一。[48]
史前新时代时期的玄武湖所在的南京古河道
早期的玄武湖可以直通长江。[51] 东晋大兴三年(320年)晋元帝对玄武湖进行疏浚,加深湖床,扩大水域,同时筑长堤,以壅北山(紫金山)之水。之后南朝的宋文帝也修建“北堤”,“北堤”走向与晋元帝修建的“长堤”大致相同,但更长。这两次筑堤,虽然达到了将“北山之水”(主要是紫金山北麓来水)阻于堤内,使得玄武湖的蓄水量大大增加的目的,但是却第一次改变了玄武湖的面貌,“北堤”以西的湖面逐渐萎缩,直至成为陆地。[49]
六朝以后,由于隋文帝拆毁建康城(今南京)[50] ,玄武湖也跟着逐渐衰落。由于荒于治理,到北宋初年,玄武湖的淤积已经很严重,逢旱年往往水竭湖干成为旱地。北宋天禧年间又开十字河,立四斗门,进一步减去湖水,十字河上还架桥以通往来。时间一长,河道也湮塞起来,玄武湖的蓄水、灌溉功能也都被废除了。[52] 北宋熙宁八年(1075年),江宁府尹王安石奏准宋神宗泄湖得田、重开十字河,得田二百顷,分给“贫田饥人”耕种,使得玄武湖的面积大幅缩小,玄武湖也因此基本消失了二百多年。这时的玄武湖区域基本上不再是湖泊,而是一片片的农田。[50] [51] [52]