Faits: A. A.a Le groupe A._ est actif dans l'horlogerie de luxe. Il est composé d'un certain nombre de sociétés, dont A._ SA (ci-après: A._), X._ SA (ci-après: X._) et B._ SA (ci-après: B._), laquelle a repris, en 2005, C._ SA (ci-après: C._), D._ SA et E._ SA à la suite d'une fusion par absorption. En principe, chaque société a une tâche spécifique dans le groupe. Ainsi, par exemple, A._ s'occupe pour l'essentiel de l'aspect commercial et de la vente de montres produites par d'autres sociétés du groupe, X._ assemble les composants et B._ procède à l'emboîtage. Les comptabilités des différentes sociétés sont séparées et n'ont pas été consolidées. En revanche, certaines divisions de management ont été regroupées en un seul service; tel est le cas du service des ressources humaines. R._ est administrateur de la plupart des sociétés du groupe, dont X._ et B._. A.b Le 1er mai 2001, Y._ a été engagée par C._ en qualité d'ouvrière polyvalente, moyennant un salaire mensuel brut de 3'200 fr. A partir du 1er décembre 2003, elle a travaillé pour B._ comme auxiliaire en horlogerie, moyennant un salaire mensuel brut de 3'500 fr. Par courrier du 25 novembre 2003, C._ avait précisé à la travailleuse qu'un nouveau contrat de travail serait conclu, mais que, lors du transfert, elle conserverait ses droits acquis (vacances, bonus/malus, etc.), le treizième salaire étant toutefois payé au prorata du temps travaillé chez C._. Le certificat de travail établi le 30 novembre 2003 indique que Y._ a exécuté toutes les tâches inhérentes à son emploi d'une manière consciencieuse et assidue. Chez B._, Y._ travaillait dans un grand atelier, comportant 6 à 8 établis. S._ était son supérieur hiérarchique. La travailleuse était chargée du contrôle des mouvements après leur assemblage et avant leur emboîtage par d'autres employés. Les relations avec ses collègues étaient bonnes. Le samedi 24 mars 2007, Y._ ne s'est pas présentée à son poste de travail alors qu'elle était censée effectuer des heures supplémentaires. Le travail supplémentaire de ce samedi-là consistait à emboîter des montres destinées au salon horloger. Il était d'usage, au sein du groupe, que les travailleurs soient requis de travailler le soir et/ou le week-end durant trois périodes dans l'année, notamment au printemps avant le salon horloger. A la suite de cette absence, Y._ a eu un entretien le lundi suivant avec S._ dans le bureau de ce dernier. Le supérieur hiérarchique a reproché à la collaboratrice de ne pas être venue travailler le samedi précédent en criant, en l'invectivant et en tapant du poing sur la table. Par ailleurs, il l'a immédiatement transférée dans un local plus petit et dépourvu de fenêtres, dans lequel elle était chargée de contrôler et nettoyer des verres de montres déjà emboîtées, ce qui nécessitait parfois de les décoller. Ce travail supposait l'emploi de produits toxiques (alcool isopropylique, acétone et F45) qui, en raison de l'absence d'une installation d'aération ou de ventilation spécifique dans un local confiné sans fenêtres, ont causé des maux de tête et des nausées à la collaboratrice. Jusque-là, personne n'avait jamais été affecté à plein temps à ce travail, qui était effectué, pour chaque montre, par l'ouvrier chargé de l'emboîtage. Ce déplacement, qui avait désorganisé le travail de l'atelier, n'était pas lié à de mauvaises prestations de la collaboratrice en tant que contrôleuse de mouvements. Quelques jours plus tard, Y._ s'est plainte de ses nouvelles conditions de travail. Après avoir constaté qu'il était impossible de dialoguer avec S._, la responsable des ressources humaines a proposé le transfert de la collaboratrice auprès de X._, où elle pourrait exercer à nouveau l'activité de contrôleuse de mouvements, l'entreprise ayant besoin d'une employée dotée de cette compétence. Après un essai concluant chez X._, Y._ a dû toutefois retourner chez B._, la procédure de transfert prenant du retard pour une raison indéterminée. Du 14 juin au 18 septembre 2007, Y._ a été en incapacité de travail à 100%. Par courrier du 1er octobre 2007, B._ a confirmé à la collaboratrice que son contrat de travail serait «transféré au sein de» X._; malgré la conclusion d'un nouveau contrat, elle conserverait ses droits acquis en termes de vacances, bonus/malus, durée du délai de congé et droit au salaire en cas de maladie ou d'accident. Dès le 1er décembre 2007, Y._ a travaillé pour X._, dans le département «logistique, fourniture et stock» dirigé par T._. Selon le contrat de travail établi à en-tête de X._, elle était engagée comme auxiliaire en horlogerie pour un salaire mensuel brut de 4'300 fr.; il était précisé qu'elle pouvait en tout temps être chargée d'autres travaux au sein du groupe A._ et déplacée sur d'autres sites. Par la suite, Y._ a remercié le service des ressources humaines pour ce transfert et s'est déclarée satisfaite de son nouveau poste. Elle avait de bons contacts avec ses collègues et n'a posé aucun problème, que ce soit du point de vue de la qualité de son travail ou de son comportement. A.c A partir de décembre 2007, le syndicat H._ a dénoncé, notamment dans la presse, la direction des entreprises du groupe A._ qui, selon lui, tolérait et couvrait des comportements inadmissibles envers les salariés, comme le recours systématique et exagéré aux heures supplémentaires, payées sans majoration, des insultes, des actes de harcèlement sexuel et de mobbing; S._ et T._ étaient visés en particulier. Cette démarche a été suivie de plusieurs effets. L'Union des fabricants d'horlogerie de Genève et Vaud a organisé, dès le 13 mai 2008, une procédure de négociation entre partenaires sociaux, notamment pour examiner les griefs formulés par le syndicat et nommer un médiateur externe. En outre, une enquête de l'Office cantonal de l'inspection et des relations de travail a été diligentée et la Commission de règlement des conflits collectifs a été saisie. A l'initiative de H._, une assemblée du personnel de X._ et de B._ a eu lieu le 2 juin 2008; Y._ y a participé avec une quarantaine d'autres personnes. Ensuite, au moins deux autres assemblées du personnel se sont déroulées jusqu'au 23 juin 2008; Y._ s'y est également rendue. Une employée de B._, qui a assisté à l'une de ces assemblées, a rapporté à la responsable des ressources humaines de X._ et B._ le nom de quelques participants, dont celui de Y._. Le 10 juin 2008, R._ et U._, directeur de B._, ont interrogé Y._ à propos de T._. La collaboratrice a répondu qu'elle n'avait pas de reproches à élever contre ce chef, mais qu'elle avait refusé de signer une lettre de soutien en sa faveur lorsqu'il le lui avait demandé. Elle a voulu par ailleurs aborder la question du comportement de S._ envers elle au printemps 2007, mais ses interlocuteurs ont refusé d'entrer en matière et l'ont priée de mettre ses griefs éventuels par écrit. Le même jour, Y._ a écrit à U._. Elle déclarait avoir été «victime et humiliée suite au comportement inadmissible» de S._ le 26 mars 2007, avoir beaucoup souffert de cette situation et être «tombée en dépression» durant trois mois et demi, bien qu'elle aimât son travail; elle regrettait que R._, lors de sa visite du 10 juin 2008, n'ait pas voulu rencontrer ses collègues pour tenter de comprendre la situation résultant des méthodes de S._ et T._. Le 19 juin 2008, B._ lui a répondu que son problème avait été réglé en 2007 et que des mesures avaient été prises afin d'éviter qu'un cas similaire se reproduise. Le 27 juin 2008, X._ a résilié le contrat de travail la liant à Y._ pour le 31 août 2008. Le motif invoqué résidait dans la «restructuration du département logistique». Par courrier du 15 juillet 2008, Y._ s'est opposée au licenciement; elle faisait valoir que le congé avait été donné en représailles à sa participation aux assemblées du personnel de juin 2008. B. Par demande déposée le 26 septembre 2008, Y._ a assigné X._ et A._ en paiement d'un montant de 47'000 fr. plus intérêts, soit 20'000 fr. à titre de réparation du tort moral et 27'000 fr. à titre d'indemnité pour licenciement abusif. Par jugement du 23 décembre 2009, le Tribunal des prud'hommes du canton de Genève a débouté Y._ des fins de sa demande. La demanderesse a appelé de ce jugement, sans remettre en cause le rejet de l'action en tant qu'elle était dirigée contre A._. Statuant le 4 novembre 2010, la Cour d'appel des prud'hommes du canton de Genève a annulé le jugement de première instance et condamné X._ à payer à Y._ les sommes de 5'000 fr. en réparation du tort moral et de 27'000 fr. à titre d'indemnité pour licenciement abusif, avec intérêts à 5% dès le 28 septembre 2008. C. X._ interjette un recours en matière civile. Elle conclut à l'annulation de l'arrêt cantonal et demande au Tribunal fédéral de «déclarer infondé l'appel interjeté par Y._ (...) contre le jugement du Tribunal des prud'hommes». Y._ propose le rejet du recours dans la mesure de sa recevabilité.