李晟字良器,隴右臨洮人。祖父李思恭,父親李欽,世代居住在隴右擔任副將。他年幼喪父,對母親孝順恭謹,性情勇猛剛烈,很有才幹,擅長騎射。他十八歲參軍,身高六尺,勇敢絕倫。當時攻打吐蕃,吐蕃驍將登上城樓抵抗,射傷了很多士兵,於是招募軍中善射之人去射殺他。李晟拉弓引箭,箭就射死了他。將軍厚賞了他,拍著他的背說:「此人可以抵擋一萬敵軍。」鳳翔節度使高升雅久聞其名,徵召他為列將。此後,李晟多次擊敗羌軍,廣德(763一764)年間因功授任特進、試光祿卿,轉任是太常卿。
大曆四年,吐蕃圍攻靈州,守將派遣他率領五千士兵進擊,他推辭說:「靠兵力攻打人太少,以謀略功打人又太多。」於是請求率兵千人衝出大震關,到達臨洮,毀滅定秦堡,活捉定秦堡將領,他們才撤銷了對靈州的包圍離開。不久,我軍他部在鹽倉和吐蕃交戰失敗,他率領部眾予以截擊,在亂軍中救出了馬磷,並因功被封為合川郡王。德宗即位後,吐蕃進犯劍南,三川為之驚恐,皇上詔令他率領神策兵救援,李晟於是越過漏天,攻破飛越,平定肅寧三城,渡過大渡河,消滅敵軍士一千多人,隨後他們撤退。
建中二年(781),田悅反叛,率兵包圍臨格州和邢州,德宗詔令他合兵救援臨洛。河東、昭義軍在臨名之南進攻楊朝光,楊朝光被斬殺。他攻打田悅,田悅退兵,於是引兵渡過名水,橫擊田悅的軍隊,田悅大敗。當時朱滔和王武俊聯軍在深、趙兩州,因朝廷賞賜太輕而心懷不滿,田悅知道後,派遣使者前去求援,朱滔和王武俊答應響應,於是派兵在趙州圍攻康日知。
李抱真分兵兩千守衛邢州,馬燧大怒,想要撤軍。李晟對馬燧說:「當初我們三個將領奉詔一起進攻。李尚書因邢州和趙州接壤,分兵把守,誠然沒有害處,而且他的精兵強將都留在這裡,您現在突然要撤退,國家大事怎麼辦呢?」馬燧怒氣頓消,親自前往李抱真的營壘,和他交好如初。王武俊進攻趙州,李晟獻計請求解趙州之圍。德宗加封他,禁軍將軍等人都歸他統領。他從魏州率軍北上,直奔趙州,王武俊聽說後撤軍而去。
他在趙州停留三日,和張孝忠合兵,北攻恆州,在清苑圍攻朱滔的將領鄭景濟,決水灌城。田悅、王武俊派兵救援,兩軍交戰於白樓,他的坐騎接連被射中。過了一個月,城中情勢更加危急,朱滔、王武俊於是召集了更多兵力,圍攻李晟。李晟與鄭景濟等人多次交戰,從正月直到五月。後來,李晟病重,多次暈倒,軍中將官於是謀劃將他用馬車拉回定州,敵軍也不敢追逼。