Juno MacGuff (Ellen Page), élève du secondaire âgée de seize ans dans le Minnesota, apprend qu'elle est enceinte de son ami et admirateur de longue date, Paulie Bleeker (Michael Cera). Elle pense d'abord se faire avorter. Mais elle change d'avis et décide de faire adopter l'enfant. Avec l'aide de son amie Leah (Olivia Thirlby), Juno fait les petites annonces du Pennysaver et trouve le couple idéal pour accueillir son enfant. Accompagnée par son père Mac (J.K. Simmons), Juno fait la connaissance du couple, Mark et Vanessa Loring (Jason Bateman et Jennifer Garner), dans leur superbe maison, et elle souhaite une adoption anonyme, c'est-à-dire que l'enfant ne connaitra pas le nom de sa mère biologique (accouchement sous X). Quoique reconnaissante, Vanessa est un peu angoissée à l'idée que Juno pourrait changer d'avis et leurs premières conversations ne sont pas faciles. Pourtant, Juno et Leah rencontrent Vanessa dans un centre commercial entrain de jouer avec un enfant. Juno l'encourage à parler au bébé à travers son ventre. De l'autre côté, Juno se lie plus facilement d'amitié avec Mark avec qui elle partage les mêmes goûts musicaux et cinématographiques. Mark, qui a laissé de côté son groupe de rock lorsqu'il était jeune, travaille à domicile en tant que compositeur de musique de publicité. Juno passe quelques fois du temps avec Mark chez lui, ignorant les avertissements de sa belle-mère (Allison Janney) : elle ne devrait pas passer de temps seule avec un homme marié.
Tandis que la grossesse suit son cours, Juno lutte contre ce qu'elle ressent pour le père de son enfant, Paulie, qui est amoureux d'elle. En apparence, Juno se comporte de manière indifférente envers Paulie. Mais quand elle apprend qu'il a demandé à une autre fille d'être sa cavalière au bal de fin d'année, elle se sent blessée et lui dit ce qu'elle en pense. Paulie lui rappelle que c'est elle qui souhaitait garder une certaine distance entre eux et lui dit qu'elle lui a brisé le coeur. Il sous-entend aussi qu'elle ressent des choses pour lui mais qu'elle n'arrive pas à l'admettre.
Peu avant l'accouchement, Juno rend à nouveau visite à Mark. Cette rencontre devient très émotionnelle. Mark lui dit qu'il va bientôt quitter Vanessa. La réaction de Juno le surprend : elle est horrifiée. À ce moment-là, Vanessa rentre à la maison et à sa grande surprise, Mark lui avoue qu'il ne se sent pas prêt à être père et qu'il y a des choses qu'il veut faire avant: ses rêves. Juno regarde le mariage des Loring s'effondrer, repart en voiture et éclate en sanglot sur le bas-côté de la route avant de prendre une décision. Elle retourne chez les Loring et laisse un mot à la porte avant de s'en aller.
Après une discussion sincère avec Mark, Juno admet qu'elle aime Paulie et le lui dit. Peu après, Juno perd les eaux et file à l'hôpital où elle accouche. Elle n'avait rien dit à Paulie à cause de sa compétition d'athlétisme. Voyant qu'elle n'était pas dans les tribunes, il court à l'hôpital et découvre Juno qui a déjà accouché. Juno pleure et Paulie la réconforte. Vanessa arrive à l'hôpital où elle découvre, heureuse, son fils. Sur le mur de la nouvelle chambre du bébé, Vanessa a encadré le mot de Juno : « Vanessa: If you're still in, I'm still in. --Juno. » Le film se termine en été avec Juno et Paulie jouant une chanson à la guitare et s'embrassant à la fin du morceau.