عندما علم ألفونسو بتحرك ابن تاشفين ترك حصاره لسرقسطة وتقدم مع حلفائه لقتال المسلمين ويوصل بعض المؤرخين عدد جنود ألفونسو إلى 60ألف وفي روايات انها 100 ألف منهم 30 ألف من عرب الأندلس. عسكرت الجيوش النصرانية على بعد 3 أميال من جيش المسلمين على الضفة الأخرى من نهر جريرو.
قسم الجيش الإسلامي إلى 3 أقسام:- الأندلسيين في المقدمة بقيادة المعتمد بن عباد
- البربر وعرب المغرب في المؤخرة بقيادة داود بن عائشة أحد قادة المرابطين
- الجنود الاحتياطيين ويكونون خلف الجيش الإسلامي وهم بقيادة ابن تاشفين
قام ألفونسو بهجوم خاطف ومفاجئ على قوات المسلمين مما أربكها وكاد يخترق صفوفها وقاوم المسلمون مقاومة عنيفة لم تنجح في رد الهجوم فما كان من ابن تاشفين إلا أن أرسل جنوده على دفعات إلى أرض المعركة مما أدى لتحسين موقف المسلمين ثم عمد ابن تاشفين على اختراق معسكر النصارى ليقضي على حراسه ويشعل النار فيه الأمر الذي أدى إلى تفرق جيش ألفونسو بين مدافع عن المعسكر ومحارب للقوات الإسلامية.
حوصر ألفونسو وبقية جنده ولم يتبق منهم سوى ألفونسو و500 فارس أغلبهم مصابين. قام من تبقى من جيش ألفونسو بالهرب ولم يصل منهم إلى طليطلة سوى 120 فارس.
ما بعد المعركة
رجع يوسف بن تاشفين إلى بلاد المغرب بعد انتهاء القتال فقد أدى ما عليه وهزم صليبيي الأندلس هزيمة ساحقة أوقفت زحفهم واخرت سيطرتهم على الاندلس مدة تزيد عن قرنين ونصف. قام الأندلسيين بمعاودة ما كانوا عليه قبل المعركة فاقتتلوا فيما بينهم وتنازعوا السلطة واستعانوا بالملوك النصرانيين في حروبهم ضد بعضهم. قام ابن تاشفين باقتحام الأندلس ليزيل الفتنة فيها ويضمها موحدة إلى دولته القوية. ألقى ابن تاشفين القبض على أغلب ملوك الطوائف ومنهم ابن عباد وأتبع ممالكهم لدولته ، ونفي ابن عباد إلى اغمات وتوفي هناك وهي مدينة أثرية مغربية تقع على بعد 30 كلم من مراكش.