After fending off several attacks by angel-possessed people (losing Kyle (Tyrese Gibson), Percy (Charles S. Dutton), Howard (Jon Tenney) and Sandra (Kate Walsh) in the process), Gabriel (Kevin Durand) arrives.
Micheal (Paul Bettany) sends everyone away and fights Gabriel. Gabriel kills Micheal only to have the diner blown up around him by a dying Bob Hanson (Dennis Quaid).
Gabriel survives the explosion and attacks Jeep (Lucas Black), Charlie (Adrianne Palicki) and Audrey (Willa Holland) as they drive away. Jeep slams on the brakes, sending the car rolling. Audrey dies in the crash but Jeep, Charlie and the baby survive and head for higher ground. Gabriel corners them at the edge of a cliff and is about to kill them all when Micheal shows up, fully restored to his former stature as an angel. Micheal tells Gabriel that God has changed his mind, inspired by Micheal's continued faith in humanity. They have a short fight, ending with Micheal holding his sword to Gabriel's throat. Micheal will not kill him and let's him go.
The last shot is off Jeep, Charlie and the baby - several months later - driving along with a car full of weapons.