在今山西太原西南有一个地方古称“晋阳”。传说此地曾是夏朝的都城;商代之时又成为古唐国都城。古唐国姓祁姓,开国君主是帝尧的后代。唐人后来将都城南迁至今山西冀城西。西周政权建立后,唐人不恭王命,联合戎狄与西周搞对抗,周成王便出师灭亡了古唐国。
后来周成王将弟弟叔虞封在唐国故地,国号仍为“唐”。叔虞的儿子燮父为了将姬姓唐国与祁姓的古唐国区别开来,便以古晋水为名,将国号改为“晋”。
周成王在封建唐国时把属于鬼方(赤狄前身)族隗姓的九个大宗和部分殷商遗民迁徙到唐,用来充实国家人口。唐国故地本就是华夷混居之地,现在又加入了周、鬼方和商民,因此成为人口成分极复杂的国家。
晋国是西周千里京畿之内的甸侯之国,肩负着阻止北狄南侵的重要使命。晋国公室与王室关系密切,晋军经常追随周王征战四方,晋国的国家地位也高于一般诸侯。
从燮父到晋靖侯历经五代君主,这期间的历史已经无从可考。晋靖侯十七年,周厉王出逃彘地,西周开始实行“共和制”。
晋靖侯七年(bc805),王室军队在鸣条山(中条山)被条戎击败,随同作战的晋军也遭受了不小的损失。这一年太子出生,晋靖侯为了牢记战败的耻辱,为太子取名为“仇”。
晋靖侯十年(bc802),晋军在千亩之战中击败西戎。晋军举行了隆重的凯旋仪式,这一年晋靖侯的次子出生,他为了纪念本次胜利,为次子取名为“成师”。
晋大夫师服说:“君侯给儿子起名的方式真是太奇怪了!名表示道义,道义产生礼仪,礼仪规范政事,政事端正民风;所以以正治国人民就服从,否则就产生动乱。古语说‘嘉偶为妃,怨偶为仇’。现在太子叫仇,他要仇视谁呢?弟弟叫成师,名子大得可以称君;这恐怕在昭示祸乱了吧?哥哥恐怕要被兄弟废替了吧!”
晋靖侯在位二十七年去世。在大丧期间,晋靖侯的兄弟殇叔驱逐太子仇自立为君。殇叔三年,周宣王去世,周幽王即位。
殇叔因为得位不正,所以他采取的统治手段也十分残酷。四年,太子仇卷土重来,在支持者的帮助下杀死殇叔夺回君位,是为晋文侯。
晋文侯十年,镐京被西戎攻陷,周幽王被杀。晋文侯与卫武公、郑桓公、秦襄公出师救亡,将犬戎赶出镐京。西周东迁时,晋军一直不离周平王左右,将天王和周人安全护送到成周。周平王为了表彰晋文侯为王室做出的巨大贡献,把河西部分之地封给晋国。如此一来,晋国的版图便首次越过黄河。
晋文侯在位三十五年去世,太子伯即位,是为晋昭侯。
晋国在立国后有过几次迁都经历,晋人为了躲避强敌曾将国都迁曲沃(古曲沃在今闻喜县东北),后来又迁到绛。