A magyar törzsek beköltözését a Kárpát-medencébe tudatos előkészületek és véletlenszerű események egyaránt jellemezték. 894-ben Bölcs Leó bizánci császár szövetséget kötött a magyarokkal a Bizáncot fenyegető bolgárok ellen. A magyarok Árpád fia, Levente vezetésével sorra aratták győzelmeiket a bolgárok felett a Balkánon. E segítségnyújtás a magyaroknak is előnyös volt, mert így megerősíthették helyzetüket az Al-Dunától északra eső területeken.
Ugyanebben az évben Szvatopluk morva fejedelem is szövetséget kötött a magyarokkal a frankok ellen. Ennek emlékét őrzi a fehér ló mondája, mely szerint Árpád követe fehér lovat és nyerget adott Szvatopluknak, amiért cserébe füvet, vizet és egy marék földet kért. Ezt a magyarok az ország megvételeként értelmezték, a morvák azonban nem tartották be az "egyezséget", nem hódoltak be, s - a monda szerint - ez váltotta ki a magyar támadást. A menekülő Szvatopluk fejedelem pedig a Dunába fulladt. A valóságban a magyar csapatok a Dunántúlon hadakoztak, amikor Szvatopluk váratlanul meghalt, ellene tehát nem, csak fiaival harcoltak később az északi területekért. Nomád felfogás szerint az egyik fél halálával a szerződés érvényét vesztette, a magyarok tehát felhatalmazva érezték magukat e terület elfoglalására. A Kárpát-medencében harcoló magyar csapatok nem tértek vissza Etelközbe, hanem - a fősereg bevonulását előkészítendő - a Felső-Tisza vidékére vonultak.
895-ben Árpád fejedelem a magyar fősereggel átkelt a Vereckei-hágón, benyomult az Alföldre és Erdélybe, ezzel kezdetét vette a honfoglalás. A magyar fősereg feladata az Etelközben maradt magyarság átköltöztetésének katonai előkészítése lett volna.
Eközben az Etelközben maradt magyarság sorsa tragikus fordulatot vett. A 890-es években újabb sztyeppei népmozgás indult meg, amely a dominó-elv szerint nyugat felé űzte az itt élő népeket. Az arabok hadserege elöl menekülő török úzok megtámadták a besenyőket. A bolgár-magyar háború végeztével a bosszúálló bolgárok szövetséget kötöttek a magyarságtól keletre lakó s velük régóta ellenségeskedő besenyőkkel, akik - amúgy is menekülvén az úzok elöl - rátámadtak az etelközi szállásokra, kivárva az alkalmat, amikor a magyarok serege éppen a Kárpát-medencében hadakozott. A besenyő támadás megrendítő erejű volt, hadsereg hiányában a magyarság meg sem próbálta az ellenállást, hanem - állatai, ingóságai nagy részét hátrahagyva - pánikszerűen menekülve a Kárpátok hágóin átkelve beözönlött a Kárpát-medencébe. Az etelközi vereség - amelyről a magyar krónikák mélyen hallgatnak - súlyos volt, de nem érintette az egész lakosságot. A veszteség leginkább a besenyőkhöz közel élőket sújtotta, valamint az állatállományt, amelyet a gyors menekülés miatt nem tudtak maguk előtt hajtani.
895-ben Erdély és az Alföld területe került a magyarok kezére a Duna-Garam vonaláig. A Kárpát-medence teljes birtokba vétele a 900-as évek elejéig tartott. 900-ig a magyar seregek elfoglalták a frankok ellenőrzése alatt álló, a Dunától nyugatra eső területeket, az egykori Pannóniát, 902-ben pedig végleg megdöntötték a Morva Fejedelemséget, amelyet Szvatopluk két fiának trónviszálya belülről amúgy is erősen meggyengített.
A hagyomány szerint a besenyőktől elszenvedett vereség Álmos fejedelem életébe került: „Álmost egyébként megölték Erdélyországban, nem vonulhatott be ugyanis Pannóniába” – olvasható az 1358-ban keletkezett Képes Krónikában. Álmos rituális feláldozásának több magyarázata is lehet. Kazár hagyományból tudjuk, hogy a fejedelemnek életével kell fizetnie, ha népét nagy katonai vereség vagy természeti csapás éri. E nézet szerint Álmosnak azért kellett meghalnia, mert rosszul tartotta a kapcsolatot az égiekkel, és népét katasztrófába sodorta. A másik magyarázat szintén a kazár hagyományból ered: eszerint a fejedelem bizonyos számú uralkodási év eltelte után agg kora miatt alkalmatlanná válik népe vezetésére.
A honfoglalás idején a magyar törzsszövetség élén két fejedelem állt: a kende és a gyula. Vitatott kérdés, hogy melyik méltóságot ki töltötte be. Az egyik nézet szerint a Kende Levedi, majd fia, Kurszán volt, a gyula tisztségét pedig Álmos, majd fia, Árpád töltötte be. E nézetet támasztja alá, hogy Levédiában Levedi volt a kazár hatalom képviselője, a főkirály, akinek kazár felesége volt, továbbá hogy Álmost, mint hadvezért az etelközi vereségért áldozták fel, Árpád hadvezéri méltósága (gyula) mellett pedig az szól, hogy a Kárpát-medencébe érkező hadakat a hagyomány szerint Árpád vezette.
A másik nézet szerint Etelközben a törzsek Levedi helyébe új főfejedelmet (Kendét) választottak Álmos személyében - ez a fejedelemválasztás a vérszerződés mondájában őrződött meg. Álmost fia, Árpád követett e tisztben, a gyula tisztsége pedig Levedi fiára, Kurszánra szállt. E nézet képviselői azt emelik ki, hogy a honfoglaló hadműveleteket valószínűleg Kurszán vezette, e feltételezést támasztja alá, hogy Árpád nevével egyetlenegy nyugati forrásban sem találkozunk, a korabeli nyugati források a honfoglalás eseményeivel kapcsolatban Kurszán nevét említik egészen 904-ig, amíg a bajorok tőrbe nem csalták és meg nem ölték.
Akármint volt is, a kettős fejedelemség rendje Kurszán halála után (904) megszűnt, a főhatalom Árpád kezébe került. A későbbi források már csak Árpádot és fiait emlegetik a magyarok vezéreiként, ami érthető, ha figyelembe vesszük, hogy tőle eredeztették a fejedelmeket és királyokat, róla nevezték el a háromszáz évig uralkodó királyi házat.
670 táján az ekkor már kereken száz éve az avarok országának számító Duna-medencében egy etnikailag és kulturálisan új népesség jelent meg, amelyet a szakirodalom késő avar népességnek vagy - régészeti leleteik díszítőmotívumai alapján - "griffes-indás" népcsoportnak nevez. Nyugaton őket is avarnak tekintették, de bizánci források alapján valószínű, hogy a széteső onogur törzsszövetség egy része sodródott ide. Nyelvüket nem ismerjük, de feltehető, hogy éppúgy törökül beszéltek, mint az onogurok másfelé vetődött csoportjai.
László Gyula, a honfoglalás kiváló szakértőjének feltevése szerint viszont ez a késő avar népesség magyarul beszélt, tehát az ő beköltözésükkel, 670 körül kezdődött a magyar honfoglalás. Az Árpád nevéhez fűződő honfoglalás tehát a beköltözés második hullámának tekinthető, mivel Árpád népe magyarokat talált a Kárpát-medencében. Ezt a sokat vitatott feltevést nevezik a "kettős honfoglalás" elméletének.
A régészet tanúsága szerint a honfoglaló magyarok számottevő avar népességet nem találtak a Kárpát-medencében. Az avarok hirtelen "eltűnése" a 8. században valóban magyarázatra szorul, egyesek a frank támadás okozta katasztrófát látják e tény mögött. László Gyula elmélete szerint azonban a magyarok (onogurok) beolvasztották, elmagyarosították az avarokat, vagyis a késői avarok többsége magyar nyelvű és etnikumú volt, akik később összeolvadtak Árpád magyarjaival.
A kettős honfoglalás elmélete magyarázatot ad arra a már említett tényre, hogy a legtöbb idegen nyelvben a magyarság elnevezése az onogur népnévből származik, magyarázatot ad nyelvünk korai szláv jövevényszavaira, mindamellett egyelőre csupán tudományos hipotézisnek tekinthető, melyet alapos érvekkel sem igazolni, sem pedig cáfolni nem lehet.