Faits: A. Depuis 1965, Y._ SA et Z._ sont locataires d'une arcade commerciale et d'un bureau dans l'immeuble sis ..., à Genève. Le restaurant "A._" est exploité dans ces locaux; Y._ SA, dont Z._ est l'administratrice unique, est propriétaire du fonds de commerce. Entre le 1er novembre 1999 et le 30 juin 2001, les baux ont été brièvement transférés à une société tierce. En date du 29 juin 2001, la Société anonyme X._, bailleresse, a conclu deux nouveaux contrats avec Y._ SA et Z._; il n'est pas contesté que le bail portant sur le bureau est lié à celui relatif à l'arcade. En dernier lieu, le loyer annuel brut a été fixé à 74'204 fr.40 pour l'arcade et à 7'812 fr. pour le bureau. Depuis 2001, V._ exploite le restaurant en gérance libre. En contrepartie, il verse mensuellement aux locataires, en sus des loyers de l'arcade et du bureau, un montant de 3'000 fr. pour l'exploitation du commerce et un montant de 2'000 fr. pour la gestion administrative du restaurant. En 2004, la propriétaire de l'immeuble a entrepris d'importants travaux de rénovation des façades. A la même époque, les locataires se sont plaints auprès de la bailleresse de divers défauts, dont l'absence de climatisation. Un échange de correspondance a eu lieu entre la régie en charge de l'immeuble et les locataires. Dans l'un de ces courriers, la régie a refusé d'accorder une réduction de loyer aux locataires pour les nuisances liées au chantier de rénovation, au motif que des travaux à plus-value avaient été entrepris dans le restaurant, à savoir l'installation d'une climatisation. Finalement, par courrier du 14 novembre 2008, la bailleresse a accepté de verser aux locataires une indemnité de 5'812 fr., représentant un mois de loyer net de l'arcade, à titre de dédommagement pour les nuisances subies pendant le chantier. La plupart des autres locataires de l'immeuble ont également reçu une indemnité équivalant à un mois de loyer. Par avis officiels du 5 mars 2009, la bailleresse a résilié les baux de l'arcade et du bureau pour leur échéance contractuelle du 31 décembre 2011, respectivement du 31 janvier 2011. B. Par requêtes du 3 avril 2009, Y._ SA et Z._ ont contesté les congés. Elles faisaient valoir en particulier que les résiliations devaient être annulées parce qu'elles avaient été notifiées dans les trois ans après une entente des parties au sujet d'une réduction de loyer. Devant la Commission de conciliation en matière de baux et loyers, la Société anonyme X._ a exposé que les baux avaient été résiliés au motif que les locaux avaient été sous-loués à l'exploitant du restaurant à des conditions abusives. Par décisions du 18 mai 2011, la Commission de conciliation a annulé les congés. La bailleresse a saisi le Tribunal des baux et loyers du canton de Genève, concluant à la validation des résiliations et au refus de toute prolongation des baux. Pour justifier les congés, elle a invoqué à nouveau les conditions de sous-location qu'elle estimait abusives et ajouté qu'elle avait le projet d'installer dans les locaux litigieux un établissement proposant de la cuisine italienne de haut niveau. Par jugement du 25 novembre 2011, le Tribunal des baux et loyers a annulé les congés. Il a considéré que le caractère abusif des conditions de la sous-location n'avait pas été établi et que le second motif de congé apparaissait avoir été avancé uniquement pour les besoins de la cause. Statuant le 8 octobre 2012 sur appel de la bailleresse, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé le jugement du 25 novembre 2011 avec une motivation différente. Elle a jugé que les congés devaient être annulés sur la base de l'art. 271a al. 1 let. e et al. 2 CO, car ils étaient intervenus moins de trois ans après le courrier du 14 novembre 2008 dans lequel la bailleresse acceptait, après un abondant échange de correspondance, une réduction de loyer en raison des nuisances provoquées par le chantier de rénovation. C. La Société anonyme X._ interjette un recours en matière civile. Elle demande principalement au Tribunal fédéral de déclarer valables les congés notifiés le 5 mars 2009 et de refuser toute prolongation de bail. A titre subsidiaire, elle conclut au renvoi de la cause à la cour cantonale pour nouvelle instruction dans le sens des considérants. Dans leur réponse, Y._ SA et Z._ proposent le rejet du recours. La recourante a déposé une réplique, suivie d'ultimes observations des intimées. Pour sa part, la Chambre des baux et loyers se réfère aux considérants de son arrêt.