Durant la saison 2004-2005, Karim Benzema s'illustre avec l'équipe des moins de 18 ans de l'Olympique Lyonnais, inscrivant 12 buts en 14 rencontres. Jugé prometteur, il est intégré au groupe professionnel et dispute six matches de Ligue 1. L'entraîneur Paul Le Guen le fait entrer en jeu pour la première fois en janvier 2005 face au FC Metz. Alors qu'il effectue ses débuts dans le championnat de France, Benzema délivre une passe décisive pour Bryan Bergougnoux. Il signe alors son premier contrat professionnel et s'engage avec le club rhodanien pour une durée de trois ans.
En 2005-2006, Benzema poursuit sa progression en découvrant la Ligue des Champions. Face au club norvégien de Rosenborg, lors de la 6e journée de la première phase de poule, Gérard Houllier titularise les jeunes Jérémy Clément, Hatem Ben Arfa et Karim Benzema. Celui-ci inscrit son premier but en match officiel[6]. Il dispute treize rencontres de Ligue 1 et est titularisé à quatre reprises ; lors de la 29e journée le jeune attaquant marque son premier but en championnat face à l'AC Ajaccio. À la fin de la saison, Benzema affirme qu'il veut s'imposer à l'OL, « l'une des meilleures équipes d'Europe » selon lui. Il prolonge alors son contrat jusqu'en 2010.
L'Olympique lyonnais entame la saison 2006-2007 avec une victoire lors du Trophée des Champions. Menés par le PSG et privés des joueurs ayant pris part à la coupe du monde 2006, les Lyonnais égalisent grâce à un penalty de Benzema, avant de s'imposer lors de la séance de tirs au but[8]. Benzema trouve peu à peu sa place au sein d'un effectif lyonnais riche en attaquants internationaux, comme les ailiers Sylvain Wiltord et Sidney Govou, ainsi que les attaquants axiaux Fred et John Carew, auquel succède bientôt Milan Baro¨. En octobre, lors de la 10e journée de Ligue 1, Benzema remplace Fred, sorti sur blessure, et donne l'avantage à l'OL au Stade Vélodrome. Blessé à la cuisse en novembre, Benzema ne peut honorer sa première sélection en équipe de France, et est de nouveau écarté des terrains durant quelques semaines en janvier 2007. Il dispute 21 matches de championnat au cours de la saison, dont 13 comme titulaire, et inscrit 5 buts. Il marque également en Ligue des Champions, face au Steaua Bucarest, puis au Dynamo Kiev. Ce dernier but offre la victoire à son équipe ainsi que la qualification pour les 8e de finale de la compétition.
Au début de la saison 2007-2008, l'OL annonce que Benzema a prolongé son contrat jusqu'en 2012. Celui-ci s'impose en tant que titulaire et inscrit notamment le premier triplé de sa carrière face au FC Metz. L'attaquant s'est fixé comme objectif d'inscrire quinze buts en championnat[12] et atteint ce total dès la 23e journée, après avoir été aligné dans toutes les rencontres. Son 15e but de la saison en Ligue 1 est inscrit sur coup franc, et permet à son club d'égaliser dans les dernières secondes du derby face à St Étienne. La presse britannique commence à s'intéresser au joueur grâce à ses prestations en Champions League. Son doublé face aux Glasgow Rangers permet à l'OL d'accéder aux 8e de finale de la compétition, où il s'illustre de nouveau face à Manchester United. Les médias rapportent l'intérêt d'Alex Ferguson, l'entraîneur des « Red Devils », ou encore de Adriano Galliani, vice-président du Milan AC, pour le jeune joueur. Au terme de la saison, Karim Benzema est désigné meilleur buteur de Ligue 1 grâce à ses 20 réalisations, il inscrit également 6 buts en Coupe de France, 1 en Coupe de la Ligue et 4 en Champions League. À l'issue du vote organisé par France Football pour désigner le « joueur français de l'année », Benzema se classe 3e derrière Franck Ribéry et Thierry Henry. Ses prestations sont également récompensées par l'UNFP, qui lui décerne le trophée du meilleur joueur de Ligue 1. Malgré les sollicitations des clubs étrangers, l'attaquant signe en mars 2008 une nouvelle prolongation de son contrat avec l'Olympique lyonnais. Il s'engage avec le club jusqu'en 2013, avec une année supplémentaire optionnelle. Son contrat est également revalorisé, la presse évoque un salaire mensuel net « entre 300 000 et 350 000 euros ».Puis fin 2008 l est nominé pour le ballon d'or mais n'y a pas été classé mais il termine 2e derriere Franck Ribery pour le trophée de meilleur joueur français de l'année 2008 déja 3e pour celui de l'année derniere (2007). Il commence la saison 2008/2009 avec une performance remarquable lors de la 1ere journée contre FC Toulouse auquel il inscrit un doublé.Il est en ce moment mème le meilleur buteur (ex-æquo avec Messi, Gerrard et Klose de la ligue des champions (avant le match contre le FC Barcelone). Cette saison il a marqué 12 buts en 25 matchs mais il n'est cependant que 3éme meilleur buteur de la ligue 1 lors de la première partie de la saison 2008/2009.