征夷大将軍の地位を望む足利義昭を奉じて、織田信長は永禄11年(1568)9月7日に美濃国岐阜城を発して上洛の途についた。前年に稲葉山城の斎藤龍興を降して美濃国を支配下においていた信長にとって、上洛するのに通過する必要があるのは近江国だけだったが、北近江を領する浅井長政には妹のお市が嫁いでいるので盟友の関係にあり、障害となるのは南近江を扼する六角義賢であった。
この上洛の1ヶ月ほど以前から信長は、義昭の使者に自分の家臣を添えて、領地の安堵と京都守護職を与えることを条件に、義賢に協力するよう説得していた。しかし現将軍・足利義栄を擁する三好三人衆と気脈を通じていた義賢はこれを拒否したのである。
信長は義賢を力攻めにして上洛する方針とし、尾張・美濃・伊勢などから集めた兵や、徳川家康より派遣された援兵などを率いて近江国に侵攻したのである。
9月8日に近江国に入って高宮で3泊の休息を取り、その間に浅井長政の軍勢と合流。総勢6万という大軍に膨れ上がった信長勢は11日に愛知川北岸付近に布陣した。
この対岸には六角方の前線基地・和田山城があり、その後方には本城の観音寺城がある。その東側には支城の箕作城があり、この3城は三角形を成していた。幹線はこの三角形の中を通っている。
ここを通過するにあたって、織田方の戦略は2通りあった。1つは柴田勝家の発案によるもので、義賢・義治父子が籠城している本城の観音寺城を直接包囲して総攻撃するというもの。もう1つは羽柴秀吉の意見で、和田山・箕作の両支城を攻略してから観音寺城を攻撃するほうが、味方の損害が少なくて済む、というものであった。
織田勢に対して六角勢の防禦態勢は、和田山城に主力を配置して、ここで織田勢を釘付けにし、観音寺・箕作両城の兵で挟撃しようとするものだった。信長は状況を視察した後に秀吉の意見を採用することにした。義賢の思惑の裏をかき、和田山城と観音寺城には牽制のための軍勢を送り、信長自ら丹羽長秀や羽柴秀吉らの諸隊を率いて箕作城に迫り、9月12日の午後4時頃より攻撃を開始したのである。
箕作山は標高3百メートル余の小山であったが、城へ通じる道は急斜面に一筋しかなく、大樹に覆われた要害であった。守将は剛勇で知られた吉田重光・建部秀明・狛修理亮・吉田新助などで3千余人が防備にあたり、徹底抗戦の構えを見せていた。これに対して織田軍は東口から丹羽長秀隊3千余人、北口から羽柴秀吉隊2千3百余人が攻め立てた。しかし城方の守備は堅固で、日没まで陥落させることができなかった。そこで秀吉は蜂須賀正勝の夜襲案を採用することにした。1メートルほどの大松明を数百本用意し、箕作山の麓から中腹まで50箇所ほどに積み重ねておき、頃合いを見て一斉に点火し、いわゆる火攻めを行うというものだった。それと同時に秀吉隊も手に松明をかざして一斉攻撃を展開したために城兵たちも防ぎきれず、2百余人の犠牲者を出して退散してしまったのである。
この箕作城の陥落を知った和田山城では一戦も交えることなく全員が逃亡し、観音寺城の義賢も完全に戦意を失い、夜陰に紛れて甲賀郡へと落ち延びていった。翌日になって義賢父子が逃亡したことがわかると六角氏重臣の平井定武・後藤高治らもことごとく信長に降った。最後まで抵抗の姿勢を示した日野城主の蒲生賢秀も、神戸具盛の説得によって降伏した。
こうして上洛の途の障害を除いた信長は岐阜で待っていた義昭を迎える使者を送り、22日に桑実寺で合流、船で琵琶湖を渡って大津へと向かった。
この箕作城の戦いにおいて信長勢が圧勝したことを知ると、京都にいた三好三人衆は小競り合い程度の抵抗を示すが、それぞれの領地の摂津国や河内国に退いたのである。