北海园林开发始于辽代,金代又在辽代初创的基础上营造太宁宫,大定十九年(1179)建成,后更名为万宁宫。太宁宫的范围包括今北海、中海及其附近地区,宫中建有许多殿宇楼台,宫苑附近有大片稻田。太宁宫的园林布局沿袭了我国皇家园林“一池三山”的规制。琼华岛上建有广寒殿,并用太湖石点缀。太宁宫是金代皇帝游玩避暑的一处重要离宫。
至元四年(1267年),忽必烈迁都,喜爱琼华岛,以此处为中心建设一座新的都城元大都,把琼华岛改名万寿山(后改万岁山)。万岁山所在的湖泊,称为太液池。以万岁山、太液池为中心,东为大内,西为隆福宫和兴圣宫,形成三宫鼎立,宫殿与园林紧密结合的格局。
明朝永乐十八年(1420年)又多次修建,北海沿岸相继建起不少殿宇。
清初顺治年间,又在广寒殿旧址上建藏式白塔,把万寿山改名为白塔山。乾隆时期对北海进行一次重点改建,北海的建筑密度大增,园林景观发生很大变化,奠定了北海的规模和格局。光绪十一年(1885年),为慈禧太后“颐养”,挪用海军经费,重修西苑三海。光绪二十六年(1900年)七月,八国联军侵北京,这里是日、法、沙俄的联合司令部,北海几成废墟。1902年,慈禧再度修复。辛亥革命后,西苑结束了皇家御苑的历史。1925年北海辟为公园