Jimmie Johnson has won his second Daytona 500, racing past defending NASCAR champion Brad Keselowski on the final restart, while Danica Patrick finished eighth.