築城時期は諸説あるが、大永四(1524)年、北近江守護の宇多源氏・京極氏の家臣団を巻き込んだ跡目争いで台頭した在地土豪の浅井亮政により築かれたとされる。大永三(1523)年京極高清の跡目をめぐって、次男の高慶(高佳・高吉)を推す高清・守護代格の上坂信光と、長男の高広(高延)を推す浅見貞則・浅井亮政・三田村忠政・今井越前らの有力国人領主層が対立、高広派の国人領主たちは結束して今浜城(のちの長浜城)を攻め上坂信光と京極高清・高慶父子を国外に追放した。しかし、今度は浅見貞則の専横が目立つようになり、浅井亮政は国外追放した京極高清と和睦し、小谷城に迎え入れて浅見氏を追放、これにより浅井亮政は守護京極氏の名のもとで江北一帯を支配する有力戦国大名となった。
しかしこれに警戒感を抱く江南の六角定頼が大永五(1525)年、観音寺城から小谷城下に侵攻、亮政は越前朝倉氏に援軍を頼み、以降浅井氏と六角氏の対立、浅井氏と朝倉氏の同盟関係が生まれた。六角氏と浅井氏は何度も干戈を交えたが、天文二十二(1553)年、地頭山合戦で敗れた浅井久政は六角義賢に和議を乞い、久政の嫡男・新九郎は六角義賢の一字書き出しを受けて賢政と名乗らされ、六角氏の家臣・平井加賀守定武の娘を娶らされるなど、一時六角氏の風下に立たされ、実質的に服属した。しかし永禄二(1559)年、賢政は六角氏に叛旗を掲げ、平井定武の娘を離縁し、重臣の支持を得て父・久政を隠居させ、長政と名乗った。長政は永禄三(1560)年、観音寺城の北8kmの野良田に出陣、浅井軍一万一千と六角氏二万五千が激突、浅井氏は奇襲により勝利を収め、以降江北地帯を支配した(野良田合戦)。永禄七(1564)年に尾張の織田信長と同盟、信長の妹のお市を娶り、美濃の斎藤龍興と対峙した(同盟年は諸説あり)。このとき、浅井氏は同盟に際して、越前の朝倉氏への不戦を条件とし、信長は誓詞を入れている。
永禄十一(1568)年、信長は十三代将軍、足利義輝の弟、義昭を奉じて上洛を開始、浅井長政と佐和山城で合流し、観音寺城の六角義賢・義治父子に上洛の協力を求めたが拒否され、観音寺城の支城・箕作城を攻撃、陥落させ、六角氏は観音寺城から逃亡した。信長と長政は義昭を奉じて上洛を遂げ、義昭は第十五代将軍となった。しかし元亀元(1570)年四月、信長は浅井氏との同盟条件を破って朝倉氏討伐のため越前に侵攻、浅井氏は信長との盟約を絶ち、朝倉氏と協同で信長軍を挟撃しようとしたが、信長はいち早く朽木谷を抜けて撤退した(金ヶ崎退き口)。信長は同盟を破棄した浅井氏を攻めるべく六月十九日、岐阜城を進発、二十一日に小谷城下を焼き払い、支城の横山城を攻めて浅井氏を小谷城から野戦に引き入れた。六月二十九日、浅井長政八千、朝倉景健一万と織田信長二万五千、徳川家康六千が姉川を挟んで激戦となり、緒戦は浅井・朝倉軍が優勢であったものの織田・徳川軍が逆転し、長政は小谷城に退いた(姉川合戦)。その後は浅井・朝倉連合は足利義昭の呼び掛けで武田信玄、本願寺一向一揆、比叡山らと呼応し信長包囲網を布き、元亀元(1570)年の比叡山、堅田での合戦や元亀三(1572)年羽柴秀吉が在番する横山城攻撃などの行動を起こす。元亀三(1572)年の七月には越前からの朝倉義景の援軍二万を小谷城の峰続き、大嶽城に迎え入れ、虎御前山の織田軍五万と対峙したが、越冬を理由に義景が撤退し、西上する武田信玄との挟撃作戦は失敗に終わった。
天正元(1573)年、武田信玄の死去、足利幕府の滅亡などで信長を巡る情勢が好転、八月八日、浅井の武将、山本山城主の阿閉淡路守貞征が羽柴秀吉の勧告に従って投降したのを機会に信長は岐阜を進発、翌九日に虎御前山に着陣した。朝倉義景の援軍本隊二万は小谷城へ入ることができず木之本付近に着陣したが、八月十二日、朝倉方の援軍が陣取る大嶽城が陥落すると朝倉本隊も総崩れとなり、越前へ敗走、信長軍は朝倉の本拠一乗谷まで追撃し八月二十日、朝倉義景を自刃に追い込んだ。朝倉滅亡後、ふたたび虎御前山に信長は陣取り小谷城を攻撃、八月二十六日に羽柴秀吉の一隊が本丸背後の京極丸を占拠し、本丸に籠る長政と小丸に籠る久政を分断した。翌二十七日、小丸の久政が自刃、信長は不破光治らを軍使に開城を勧告したが拒否され、長政は妻お市と三人の娘を織田陣営に還した後、二十九日に本丸下の赤尾美作守屋敷で自刃、落城した。
浅井氏滅亡後、北近江三郡は羽柴秀吉に与えられたが、秀吉は小谷城があまりに峻険すぎることと、琵琶湖の水運、北国街道の陸運を重視し城を長浜(今浜)に移し、小谷城は廃城となった。長浜城には小谷城から建物、石材などが多く移築された。そのうち小谷城の天守といわれる建物はのちに彦根城西の丸に移築され現存している。