1357年,朱元璋采纳了池州学正朱升提出的“高筑墙,广积粮,缓称王”的建议,注意恢复和发展农业生产,建立巩固的根据地。1358年,朱元璋设立营田司,以康茂才为营田使,在各地兴修水利,预防旱涝,经营农田。又设立管理民兵万户府。选拔强壮农民且耕且战,使土地得到了及时地开垦,保证了军粮的供应,恢复和稳定了农民的生产和生活,增强了根据地的经济实力。同时,朱元璋对地主阶级的儒士及一些代表人物采取了优待的政策,李善长、汪广洋、陶安、冯国用等人都被重用。1360年,朱元璋又征浙东名士刘基、宋濂、章溢、叶琛到建康。刘基,字伯温,曾任江西高安县丞、江浙儒学副提举,一度弃官隐居,后出任江浙行省都事,因反对朝廷招安方国珍而被革职。回乡后组织地主武装,镇压当地起义军。刘基被朱元璋招致建康后,劝朱元璋脱离韩林儿大宋政权,独树一帜,并为其筹划用兵策略。刘基、宋濂等人都被重用。朱元璋完全明白得人才而得天下的道理。
当时,朱元璋应天府政权所控制的地区以外,在东、西、北三面均有劲敌。东面是张士诚的势力范围;西面是徐寿辉政权;北面是刘福通红巾军控制的地区。拓展根据地也是极其艰难的。他在向四外扩展的同时,重点向东南推进。采取以扩展东、西为辅,出击东南为主的战略,然后准备实力与群雄逐鹿中原。
从1357年开始,朱元璋出兵江北,夺取了张士诚的泰兴,“青军”的扬州;东向取张士诚的长兴、常州、江阴等地;向南夺取元朝宁国路(安徽宣城)、徽州(安徽歙县)、池州等地;向西打败赵普胜,取青阳县(属安徽)。1358年,朱元璋继续攻取浙东各地,克建德(今浙江建德东北),改称严州府;克婺州(浙江金华),又称宁越府,后又改为金华府。朱元璋在宁越开郡学,聘宋濂等人为师。1359年,朱元璋率军向东西两面发展,在西面打败陈友谅,收复池州。又破潜山、攻安庆。在东面,部将胡大海取张士诚的诸暨(属浙江),又攻破元的处州(浙江丽水)。常遇春克元朝的衢州(属浙江),攻杭州而不克。至此,皖南以及浙江的东南部已为朱元璋所控制。这时,在朱元璋的周围还有北邻张士诚部,西临陈友谅部,东南有方国珍,南邻陈友定。1360年闰5月,陈友谅勾结张士诚,东西两面夹击朱元璋的根据地应天府。陈友谅部攻陷了太平,太平守将花云被俘而死。随后陈友谅又率水军东下进攻建康。建康军民大震,有人献计以城投降;有人提出逃奔钟山据守;还有人主张决一死战,战而不胜再走也不晚。而刘基从中一言不发。朱元璋内心不赞成诸将的建议,就召刘基入内问计。刘基说先斩主张投降和逃奔的人,并说“我们以逸待劳,还怕不能取胜?如果打开府库,慰劳将士,以至诚之心对待他们,安定民心,稳定情绪,就能够使军民团结,将士用命,然后设下埋伏,乘机出击,一定会取威制胜,成就王业。其关键也就在此一举”。这使朱元璋更加坚定了信心。随后他就派人快速去告谕胡大海,令其率军直捣信州(江西上饶),从后方牵制陈友谅的军队。又召指挥使康茂才说:“你曾与陈友谅有过交往,如今他正率军进攻建康,我想要他的军队尽快前来,这非得你出力去引诱他不可。你现在马上写封书信给他,假装说投降于他,你作为内应,招他速来,而且你还要将这里的情况编造一番告诉给他,好让他相信你。最好还建议他分兵三道而来,以分散他的力量。”茂才答应后,说:“我家有一看门老人,过去也曾在陈友谅手下做事。让他带着书信前去,陈友谅必信无疑。”朱元璋将这些事告诉给了李善长,善长说,正担心的是敌人来,为什么还要让他们快些来呢?朱元璋说,如果张士诚和陈友谅一起来进攻,我们怎么对付他们,不如让陈友谅军队提前赶来,先打败他,那么张士诚就害怕而不敢来了。看门老人至陈友谅军前,友谅得到书信后非常高兴,急忙问道:“现在康公在哪?”老人说:“正带兵守卫江东桥。”又问:“桥是什么样的?”老人说只是一座木桥。友谅更加欣喜,准备酒食,热情地招待了老人一番。临别前,友谅对老人说:“回去告诉康公,我立即率军前去,到时候就呼老康为信号。”老人满口答应,返回后如实报告给了朱元璋,朱元璋也高兴地说敌人中我的圈套了。于是立即命令李善长乘夜撤掉江东木桥,换上铁石,天亮时,铁石桥已成。朱元璋又作了严密的部署。果然陈友谅率大军前来,至江东桥时,见到的是一座铁石桥,顿时感到吃惊和怀疑,急忙连声呼喊老康,但根本无人答应,他这才知道大上其当。结果被朱元璋军队打败。陈友谅乘小船逃走。朱元璋诸将乘胜追击,收复了太平,进克安庆,陈友谅昼夜不得休息,还于江州(江西九江)。张士诚见此,果真不敢出兵。
1361年,元察罕帖木儿大举进攻山东后,对南方尤其是江淮一带的割据政权构成了直接的威胁。而张士诚、方国珍早已投降了元朝,朱元璋为了避免与察罕冲突,遣使与之“通好”。次年6月,察罕帖木儿函告朱元璋,说已经奏报朝廷,任命他为行省平章事,朱元璋不答。12月,元官张昶持“江西行省平章政事宣命诏书”至建康,朱元璋知察罕已死,拒不受命。1363年正月,朱元璋致书察罕养子扩廓帖木儿,希望继续保持和好关系。这样,朱元璋仍然有机会在南方拓展势力。
这时陈友谅的割据政权还有很强大的实力,成为朱元璋攻击的主要目标。为了全力对付陈友谅,朱元璋接受了刘基的建议,在战略上与张士诚结好,以便在与陈友谅的交战中,使张士诚按兵不动,解除来自后方张士诚部的威胁。7月,陈友谅与朱元璋之间爆发了一场决定胜负的鄱阳湖水战。陈友谅拥兵六十万,大舰数十艘;朱元璋只有二十万人,用的也都是小船。朱元璋采用火攻,把陈友谅用铁索联结在一起的大舰焚毁了许多。双方激战数日,陈友谅失利,且战且退,朱元璋部将紧追不舍。交战当中,陈友谅被流矢射中而死。其子陈理突围逃回武昌,朱元璋大获全胜。
1364年正月,朱元璋称吴王,仍用大宋龙凤年号。2月,朱元璋亲征武昌,陈理投降。陈汉政权建立五年而亡。朱元璋又陆续攻克两湖、江西等原陈友谅所属的地区。1665年开始,朱元璋命徐达、常遇春攻取长江以北张士诚辖区。1367年正月,朱元璋在龙凤政权结束后开始称吴元年。9月,徐达、常遇春等攻破苏州,张士诚被俘,送往应天,自缢而死。随后,朱元璋又消灭了割据浙东的方国珍,统一了东南半壁河山。
10月,朱元璋派遣徐达、常遇春率领二十五万大军北伐,并发布声讨元朝的檄文,提出了“驱逐胡虏,恢复中华”和“立纲陈纪,救济斯民”的口号。檄文中还责备扩廓帖木儿、李思齐等相互吞并厮杀,是人民的大害。同时更指出,蒙古、色目人虽不是汉族,但是能知礼义,愿意为臣民的,与汉人同等对待。这篇檄文,对于瓦解敌人,号召群众起了很大的作用。12月,徐达先取山东,元山东诸将大多投降,朱元璋的军队进入济南、益都等地。
1368年正月,朱元璋在应天府即皇帝位,国号明,年号洪武。3月,徐达、常遇春率军由山东西进攻克汴梁。然后入潼关,击败李思齐的地主武装。闰7月,徐达在临清会集诸将,大军沿运河北上,攻下青州(山东德州)、长芦(河北沧州),进至直沽(天津市),元将也先白海口逃跑。28日,元顺帝弃大都北遁。8月初二,徐达率北伐军进入大都。元朝在全国范围内的统治结束。自成吉思汗至此共15帝,163年。自世祖忽必烈定国号起,共11帝,98年。顺帝北逃后,仍称元朝。1369年,明军攻克开平,顺帝继续北走。1370年(明洪武三年),元顺帝在应昌(内蒙古克什克腾旗西达来诺尔附近)患痢疾而死,年51岁,其子爱猷识里达腊继位,退到和林(蒙古人民共和国鄂尔浑河上游东岸哈尔和林)一带,史称北元。元朝实力的最后消灭是以1387年占据辽东的纳哈出归附明朝为标志。1402年,北元才去掉国号。