武则天称帝后,政权趋于稳定,内患的压力已经减少了不少,所以武则天也有心对着外患下手,以图有所扩张。这时武则天采纳唐休璟的意见,准备收复安西四镇,重建西域霸权。武则天任命右鹰扬将军王孝杰为武威道行军大总管,率兵收复西域。王孝杰以前就是征西的将领,比较熟悉西域地区的情况,而他还有个传奇的经历,当年在青海战败被俘后,本来要被砍头,但是因为他长相酷似吐蕃主的父亲,竟然免死回国。
王孝杰被委以重任后,因地制宜制定了作战方略,有计划地对西域开展进攻。事实证明武则天的选择是对的,到了长寿元年(692)十月,王孝杰一举收复了龟兹、于阗、疏勒、碎叶四镇,驱逐了盘踞在这里的吐蕃势力,重置安西都护府于龟兹,并驻扎重兵把守,号称“武威军”。有了这样强有力的军事力量的保障,丝绸之路又重新回到了武则天的手中。两年后,王孝杰又一次打败了吐蕃和突厥联军,并逐步累计战功坐上了宰相之位。
吐蕃也不甘于总是失败,不断发起战争与大周争夺丝绸之路的控制权。证圣元年(695),吐蕃大军又一次发起大规模战争。这次,武则天仍派王孝杰出兵迎战,让前面提到的娄师德充当副帅。这次好运气没有眷顾大周。到了第二年,吐蕃军队大败周军。王孝杰被贬为庶民,娄师德也被贬。雪上加霜的是,契丹人乘机起兵反叛大周,突厥人也死灰复燃入侵边境,使武则天更加忧心忡忡。
就在西域各方力量处于胶着状态的时候,吐蕃方面因为多年征战民力乏亏,再也负担不起对大周的战争,所以吐蕃率先派使者来请求讲和。武则天感到机会难得,立即派出右武卫胄曹参军郭元振作为使者前去谈判。吐蕃提出割让安西四镇的要求,郭元振力劝武则天不要答应——割地会使大周遭受到吐蕃更大的威胁。郭元振也看清楚吐蕃这样漫天要价就是为了恐吓武则天,而吐蕃自身根本没有力量再对大周开展大范围攻击。鉴于这样的情况,郭元振向武则天进言采取与吐蕃拖延的方法,相互讨价还价,和谈一谈就是好几年。
到了圣历二年(699)、长安三年(703),吐蕃接连发生内乱,实力大损,基本上对大周已经构不成实质性的威胁。长安元年(701),武则天提拔郭元振统领凉州军务。郭元振紧紧抓住当地的农业、军队建设,将凉州建成了一座抗御吐蕃、突厥的桥头堡。这两股少数民族势力被遏制住,保持了西疆的稳定。
虽然西疆趋于稳定,但是东边契丹人也开始了叛乱。万岁通天元年(696),在营州(治所在今辽宁朝阳)的大周都督因为残暴激怒了契丹部落,李尽忠、孙万荣两名酋长起兵攻打营州,营州失守。武则天不敢大意,立即派曹仁师、李多祚等二十八名将领率兵征讨,并继续着“喜欢”给别人改名字的习惯,改称李尽忠为李尽灭,孙万荣为孙万斩,可见武则天多么痛恨他们。
大周军队向着营州出发,本以为只是小打小闹,很快就能摆平。没想到李尽忠、孙万荣耍得大周的军队找不到北,被各个击破,屁滚尿流地大败而归。武则天非常震惊,认为此事为大周耻辱,定要扑灭这次反叛。此时东突厥的酋长默啜请求归附,并表示将率部帮助武则天征讨契丹人。武则天表示同意,东部的战局这才有了转机。
李尽忠突然病死,这对于大周军队来说是个好消息。默啜借机对接替李尽忠的孙万荣开展了攻势,取得了不小的战果。孙万荣也不是等闲之辈,采取以进为退的战略,继续和默啜拉锯。到了神功元年(697),大周军队与孙万荣发生激战,王孝杰被重新起用。但这次的指挥官是武则天的侄子武攸宜,这小子可对军事一窍不通,只想着在武则天面前表现自己,不顾一切让军队主动出击。孙万荣的部队好好地教育了武攸宜。不幸的是王孝杰战败坠谷而亡,武则天连忙让默啜出兵攻击孙万荣。这时候孙万荣也想拉拢默啜入伙,默啜知道孙万荣的力量无法与大周相提并论,继续站在武则天一边。在这样的夹击下,孙万荣大败,后被家奴砍了头,东边的局势总算是平定了。
经过这次平叛,默啜的势力得到了空前的扩张。圣历元年(698),默啜以拥立李显、匡复大唐的名义对大周进行了侵掠。武则天听取了狄仁杰的建议,立李显为太子,由李显作为统军大帅、狄仁杰为副手反击突厥人。武则天此举大大激发了士气,迫使默啜退回漠北,再也不敢有非分之想。至此,大周的边疆彻底安定。
在武则天执政期间,虽然内有叛乱,外有边患,但总体来说,吏治清明,政局稳定,广大农民得以休养生息,社会生产获得了发展,国势持续上升,可谓上承“贞观之治”,下启“开元盛世”。