Faits: A. La Ville de Genève est propriétaire d'un immeuble à Genève, dans lequel se trouve un appartement de deux pièces destiné à des personnes en situation difficile; ce logement, qui porte le n° xxx, est géré par l'Unité de logement temporaire du Service social de la Ville de Genève (ci-après: ULT). Le 29 septembre 2006, X._ a rempli un formulaire de demande d'aide afin de bénéficier du logement n° xxx. Le même jour, le Service social de la Ville de Genève, représenté par l'ULT, et X._ ont conclu une «convention d'accompagnement social», dont la durée de validité était fixée à six mois. Le contrat comporte deux volets: d'une part, la mise à disposition de l'appartement n° xxx à titre de logement provisoire; d'autre part, un accompagnement de type social, impliquant notamment que le bénéficiaire se présente aux rendez-vous qui lui sont fixés par le collaborateur social et qu'il informe ce dernier régulièrement et complètement sur sa situation. Selon l'annexe n° 2 à la convention, X._ devait s'acquitter d'une somme de 170 fr. par mois à titre d'indemnité pour les charges d'hébergement (eau, gaz et électricité non compris). Par courrier du 22 mars 2007, l'ULT a informé X._ que la Commission d'attribution des logements temporaires avait décidé de ne pas prolonger la mise à disposition de l'appartement, en raison du manque de collaboration du bénéficiaire. Par la suite, la Ville de Genève est revenue sur cette décision. A partir d'octobre 2008, l'indemnité pour les charges d'hébergement a été portée à 500 fr. par mois. Début octobre 2009, la Gérance Immobilière Municipale a proposé un appartement à X._, qui l'a refusé. Par lettre du 2 novembre 2009, l'ULT a informé X._ qu'il était mis fin à la convention d'accompagnement social, à la suite de son refus d'emménager dans l'appartement proposé par la Gérance Immobilière Municipale; un délai au 21 janvier 2010 lui était imparti pour quitter l'appartement n° xxx. X._ n'a pas obtempéré. B. Par assignation déposée le 17 février 2010 au Tribunal de première instance du canton de Genève, la Ville de Genève a conclu à l'évacuation immédiate de X._ de l'appartement n° xxx; elle se fondait sur les dispositions relatives au prêt à usage. X._ a soulevé un incident d'incompétence ratione materiae. Il faisait valoir que les parties étaient liées par un contrat de bail à loyer, de sorte que la juridiction des baux et loyers était compétente pour connaître du litige. Par jugement du 11 octobre 2010, le Tribunal de première instance a débouté X._ de ses conclusions sur incident et, statuant à titre préparatoire sur le fond, a fixé des délais aux parties pour la suite de la procédure. X._ a formé appel contre ce jugement. Par arrêt du 18 mars 2011, la Chambre civile de la Cour de justice du canton de Genève a annulé la décision attaquée et dit que le Tribunal de première instance n'était pas compétent à raison de la matière pour statuer sur la requête en évacuation. C. La Ville de Genève interjette un recours en matière civile. Elle conclut à l'annulation de l'arrêt cantonal et demande au Tribunal fédéral, principalement, de dire et constater que le Tribunal de première instance est compétent à raison de la matière pour statuer sur la requête en évacuation. A titre subsidiaire, elle conclut au renvoi de la cause à la Cour de justice pour nouvelle décision dans le sens des considérants. X._ propose le rejet du recours. A la suite de la réponse, la Ville de Genève a déposé des observations.