Nobilii din Transilvania care s-au răsculat împotriva lui Matei Corvin se pare că au fost sprijiniți de Ștefan cel Mare, de altfel cei care au scăpat cu viață după înfrângerea răscoalei s-au refugiat în Moldova. În toamna anului 1467 Matei Corvin a trecut munții cu o oaste de 40.000 de oameni, mult mai mult decât putea mobiliza în grabă Ștefan cel Mare.
Pe când armata maghiară ajunsese la Trotuș a murit doamna Evdochia, soția lui Ștefan cel Mare, iar voievodul a încercat să ajungă la o înțelegere cu Matei Corvin – fără însă să reușească. La 14 decembrie 1467 oastea lui Matei Corvin a ajuns la Baia, oraș locuit de mulți sași și unde exista și o episcopie catolică. Se pare că regele intenționa să rămână mai multă vreme aici (într-un oraș considerat prietenos) însă în prima noapte Ștefan cel Mare a organizat un atac asupra taberei maghiare. Până în acest moment oastea moldovenească urmărise îndeaproape mișcările celei maghiare, fără însă să caute lupta. În noaptea zilei de 14 decembrie 1467 moldovenii au atacat orașul Baia pe care l-au incendiat – luptele au fost corp la corp și au ținut toată noaptea. În timpul confruntării regele Matei Corvin a fost lovit de săgețile trase de luptătorii moldoveni – semn că lupta propriu-zisă a ajuns în apropierea suveranului. Cronicarul Bonfiniu ne zice că:
Ba, ce e mai mult, și regele fu rănit în noaptea aceea de o săgeată getică, nu departe de șira spinării, și, deoarece, după ce i-au scos coada săgeții, fierul a pătruns mai adânc în carne, patru ani de zile a dus-o regele în grele suferințe. Și topindu-se rana unde era fierul, acesta se slobozea mereu în jos, până când, în cele din urmă, ieși, aruncat de însuși natura.
Nici lui Ștefan cel Mare nu i-a mers foarte bine: o parte din marii boieri se pare că se hotărâseră să-l trădeze și nu au executat manevra de învăluire poruncită, astfel că armata lui Matei Corvin a reușit să se retragă după lupta de noapte. În timpul zilei a existat un contra-atac maghiar, iar Ștefan cel Mare nu a mai fost la fel de norocos: oastea sa a fost împrăștiată și el însuși a fost în pericol de a fi capturat (a scăpat ori mituindu-i pe oștenii maghiari, ori datorită faptului că aceștia nu l-au recunoscut și el a știut să-i ducă cu vorba, depinde de sursă). Retragerea lui Matei Corvin și abandonarea proiectului politic de înlocuire a lui Ștefan cel Mare cred că a fost decisă de rana destul de gravă primită de rege în timpul luptei de noapte.
După retragerea armatei maghiare Ștefan cel Mare a decapitat pentru trădare 20 de mari boieri și a tras în țeapă alți 40 de boieri de rang mai mic.