羊侃本來是北魏人,少年時就有奇才,喜歡讀書,尤其愛好《左氏春秋》和《孫吳兵法》。剛成年就跟隨父親到梁州討伐氐族,立下功勞。後來擔任別將,當時秦州羌人莫折念生造反稱帝,派弟弟莫折天生攻破岐州,接著向雍州發動進攻,羊侃被任命為偏將前去討伐。他藏在壕溝之中,看準機會一箭向莫折天生射去,將其射死。莫折天生的部下見主將喪命,於是也就潰逃了。羊侃憑借這個功勞升任為征東大將軍、東道行台、持節、泰山太守,被封為钜平侯。
羊侃的父親一直都想南歸,所以羊侃想以河濟地區投降南朝來實現父親的遺願。羊侃到達建康後,受到了梁朝的優待和信任,幫助梁朝打退了北魏的入侵,鎮壓了閩越地區的叛亂,不久被征召為太子左衛率。
後來羊侃跟隨皇帝去樂遊苑玩,當時少府上奏說製成了一種兩邊都有刃的長矛,梁武帝賜給羊侃一匹馬,命令他拿著長矛在馬上試舞,羊侃翻身上馬左右擊刺,動作英武美妙,梁武帝看了之後讚不絕口。梁武帝還寫了首詩給他看,羊侃馬上隨韻作詩,梁武帝對他的文武雙全表示讚賞。羊侃很有骨氣,從不奉承權臣,當時的人都認為他很有氣節。
侯景叛亂後,羊侃對梁武帝說:“侯景造反的跡象早就出來了,他應該會南下,所以要馬上占據采石,命邵陵王襲擊壽春,這樣侯景既不能前進,又斷了退路,他的軍隊自然很快就會瓦解。”有的人認為侯景不會這麽快就來打京城,這個計劃就擱置了下來。結果侯景果然殺到了京城,朝廷調羊侃進入京城,協助蕭大器守城。當時侯景突然到來,百姓驚慌逃入城內,秩序很亂。羊侃布置好防衛力量,以宗室成員夾雜其間。士兵們爭先恐後地進入兵器庫搶奪武器裝備,羊侃下令斬殺了幾個帶頭的人,才把局麵控製住。不久侯景的軍隊逼近京城,城內人心不安,羊侃為了穩定民心,謊稱得到了城外射進來的書信,說援兵已經到了附近,大家才安定下來。叛軍在東門放火,羊侃親自帶兵抵抗,他讓人往下澆水,撲滅了大火,又親自拉弓射殺敵人,好不容易才把敵人趕走。朝廷獎賞他黃金五千兩、白銀萬兩、絹帛萬匹,他都不要,他帶領的部隊全部都用自己的錢來獎賞。
侯景軍用木驢(一種撞擊城門的工具)攻城,因為上麵包了一層濕牛皮,很難破壞,羊侃在箭上裝上鐵箭頭,用枯草紮在上麵,用油浸透,點燃後射到木驢上,把牛皮刺穿,這樣才把木驢燒毀。侯景軍又壘起比城牆還高的土山,羊侃命令士兵挖地道通到土山下,把土挖空,土山就倒塌了。侯景軍又用十多丈高的樓車攻城,人可以站在上麵向城裏射箭。羊侃說:“樓車太高,而城外麵的地是虛的,一定支撐不住,我們看著它倒下就行了,不用防備。”結果那車一移動就倒下了,大家都很佩服羊侃的見識。侯景軍進攻了很多天都沒有進展,幹脆把城圍起來,想誘降城裏的人。朱異和張綰主張出城決戰,梁武帝問羊侃的意見,他說:“不能出去。敵人久攻不下,現在把城圍起來,是想誘降。現在出擊,如果人少就不能成功,如果人多,萬一失敗,到時候自相踐踏,城門又窄,必然死傷慘重,這是向敵人示弱而不是示威。”但是他的意見沒有被采納。結果梁武帝派出1000多人出戰,還沒打就逃回來了,在上橋的時候紛紛掉入水中,死傷大半。
此前,羊侃的兒子被侯景軍抓住,侯景想用他來勸降羊侃,羊侃說:“我把全家人都用來報答皇上的大恩還嫌不夠,哪裏還會計較一個兒子,希望你早點把他殺了。”過了幾天侯景又把他兒子拉到城下,羊侃對兒子說:“我以為你已經死了,原來你還在。我以身報國,誓死和敵人作戰,不會因為你而有所改變的。”說完拉開弓要射死他兒子。侯景軍被他的忠義所感動,最後也沒有殺害他兒子。侯景派士哲在城下勸降羊侃,士哲口水都說幹了,羊侃還是不動心。最後士哲說:“我在北方的時候就仰慕你,隻恨這輩子不能和你說話。請你脫去戰袍,讓我好好看看吧。”羊侃就照他的話做了,士哲瞻仰了很久才走。
後來下起了大雨,建康城內土山倒塌,侯景軍乘機殺了進來,戰士們苦戰卻不能擊退敵人,羊侃下令士兵投擲火把,讓建康成為火城來阻擋敵軍,同時又在城裏築造新城。不幸的是,在這個危急關頭,羊侃卻染病去世,梁軍失去了一個最重要的將領,最終導致城池被攻破。