Oppositionspolitikern Peter Marki-Zay fick 57 procent av rösterna i en omröstning där oppositionella har röstat fram en gemensam kandidat.
Omröstningen var den andra omgången, och sex partier deltar i försöket att gemensamt få bort Viktor Orbán och hans styrande konservativa parti Fidesz från makten i parlamentsvalet, som ska hållas i april nästa år.
– Vi vill ha ett nytt, renare, ärligt Ungern, inte bara byta ut Orbán eller hans parti, sade Marki-Zay till jublande anhängare i Budapest efter primärvalsegern på söndagskvällen.
Erkänner sig besegrad
Den 49-årige Marki-Zay är borgmästare i orten Hódmezővásárhely; han anses tillhöra den konservativa delen av oppositionen och är praktiserande katolik.
Mot honom stod Klára Dobrev, som är ledamot i Europaparlamentet och tillhör Demokratiska koalitionspartiet på vänsterflygeln inom oppositionen. Hon fick 43 procent av rösterna.
– Från och med nu stödjer jag Peter Marki-Zay, sade Dobrev när hon gratulerade borgmästaren till valvinsten. Hon uppmanade oppositionen att samla sig i en enad front, efter en tämligen uppslitande valrörelse under primärvalen.
Varit splittrad
Den fram tills nu splittrade oppositionen i Ungern har tidigare inte kunnat enas om att utmana Viktor Orbán, vilket inneburit att Fidesz har kunnat behålla makten med över hälften av platserna i parlamentet.
Den första primärvalsomgången hölls i september. Marki-Zay kom då på en tredjeplats. Efter primärvalet lyckades han övertala Budapests borgmästare Gergely Karácsony att dra tillbaka sin kandidatur.
Liberale Karácsony var tidigare sedd som favorit att leda oppositionen i parlamentsvalet.