周莊王十一年,(前686年),齊襄公被叔伯兄弟公子無知殺死,不久,無知又被大夫雍稟殺掉。齊國無君,在國內的大夫高傒與公子小白(即後來的齊桓公)關係甚好,就派人前往莒國迎接他回國作國君。魯國也派軍隊護送在魯的公子糾回國奪位,同時派管仲率兵攔截從莒歸國的公子小白。管仲在途中遇上小白一行,未及正式交戰,就先向小白前胸射出一箭,小白中箭後倒在車中。管仲以為射死了小白,派人報知公子糾,公子糾得知對手已死,就慢悠悠地在旅程行走。其實,管仲的箭正好射在小白腰間的帶鉤上,小白為麻痹對方,就順勢倒下,然後搶先回國,做了國君。等公子糾六天後到達齊都臨淄,小白已經即位。魯國不肯罷休,就將軍隊駐紮在臨淄以東的乾時(今山東桓台縣南)。兩軍相戰,魯軍大敗,魯莊公棄車而逃,秦子、梁子兩名武士打著莊公的旗號引開齊軍,成為齊軍的俘虜;魯莊公坐輕車逃歸魯國。
齊桓公在乾時敗魯後,又派鮑叔牙帶領軍隊逼著魯國殺死公子糾、交出管仲和召忽。召忽自殺而死,管仲被囚入齊。鮑叔牙回到齊國,立即推薦管仲為相,主持齊國大政。
周莊王十三年(前684年)春,齊國又派大軍進攻魯國。魯國積極準備迎戰。這時,有個叫曹劌的人請求進見。他的同鄉人相勸說,有權勢的人自會謀劃這件事,你又何必摻和呢?曹劌認為有權勢的人見識淺陋,不能深謀遠慮。於是入宮進見。他問魯莊公憑借什麽來作戰,莊公回答,暖衣飽食這些用來養生的東西,不敢獨自享受,一定把它分給別人。曹劌認為,小恩小惠不能遍施民眾,所以民眾是不會跟從的。莊公說,祭祀用的牛羊玉帛不敢虛報,祝史禱告一定誠實。曹劌認為,小的信用不足以取信於神,神靈不會保佑。莊公又說,大大小小的案件,雖然不能一一明察,但必定按照實情來審判處理。曹劌說,這才是忠於職守,為民眾盡力,可以憑此去戰。若戰,請允許我跟從您去。
齊、魯兩軍在魯國的長勺相遇交戰。魯莊公與曹劌同乘一輛兵車。莊公要擊鼓進擊齊軍,曹劌勸阻道:“還不到時候”。等齊軍三通鼓罷,曹劌才讓莊公擊鼓反擊齊軍。齊軍經三次衝鋒已疲憊不堪,遭到魯軍的猛烈反擊,馬上大敗而逃。莊公又要下令追擊,曹劌阻攔住,他下車察看齊軍逃跑時的車軌確實很亂,又登車棐望到在逃齊軍的旗幟東倒西歪,確知齊軍真敗,就請莊公下令發起追擊,一舉把齊軍趕出國境。
長勺之戰是我國古代以弱勝強、以少勝多的著名戰例。齊國在長勺大戰之後,戰略重點轉入征服周圍的小國和整頓內政上。