Faits : A. A.C._ est locataire depuis le 1 er juillet 1979 d'un appartement de trois pièces dans l'immeuble sis 32, rue X._ à Genève, actuellement propriété de B._ SA, B.A._ et A.A._ (ci-après: les bailleurs). Le loyer mensuel a été fixé en dernier lieu à 988 fr., charges comprises. Le contrat de bail prévoit que les locaux sont destinés à l'usage d'habitation, mais ne spécifie pas par qui ils doivent être occupés. L'appartement a été habité par les parents de A.C._, puis par sa mère jusqu'au décès de celle-ci en 2006; ensuite, une famille s'y est installée pendant quelques mois. Depuis 1983, A.C._ et son épouse B.C._ louent une maisonnette de quatre pièces sise 21, chemin Y._ à Genève. Garagiste, associé d'une carrosserie, A.C._ travaille également comme pucier le mercredi et le samedi au marché aux puces de la plaine de Plainpalais. Il vit avec son épouse dans la maison du chemin Y._. Il déclare dormir une à deux fois par semaine dans l'appartement de la rue X._, ce qui l'arrange la veille des jours de marché aux puces. Agée de 31 ans, C.C._ est la fille de A.C._. Selon ses déclarations, son père l'héberge gracieusement dans l'appartement de la rue X._, dans lequel se trouvent ses affaires; elle y dispose d'une chambre et partage les parties communes avec son père, qui dort dans l'alcôve lorsqu'il passe la nuit dans l'appartement. C.C._ entretient par ailleurs une relation durable avec un ami, qui loue un studio à Meyrin. Le couple déclare partager son temps entre l'appartement de la rue X._ et le studio de Meyrin. Par courrier du 14 novembre 2011, la régie alors en charge de la gestion de l'immeuble de la rue X._ a reproché à A.C._ de sous-louer l'appartement sans autorisation; elle l'a sommé de réintégrer les lieux dans un délai de trente jours, à défaut de quoi le bail serait résilié avec effet immédiat. Dans sa réponse du 28 novembre 2011, le locataire a contesté toute sous-location; il a indiqué habiter avec sa fille dans l'appartement, qu'il n'avait pas l'intention de quitter. Par lettre du 19 décembre 2011, la nouvelle gérance a repris la teneur du courrier du 14 novembre 2011. A.C._ a confirmé sa position le 21 décembre 2011. Par avis officiels du 10 janvier 2012 notifiés séparément aux époux C._, les bailleurs ont résilié le bail pour le 29 février 2012 en application de l'art. 257f al. 3 CO. Dans la lettre d'accompagnement, ils ont motivé le congé anticipé par le fait que l'appartement était habité par la fille de A.C._ et l'ami de celle-ci. B. Par requête du 27 janvier 2012, A.C._ et B.C._ ont contesté le congé. Non conciliée, l'affaire a été portée devant le Tribunal des baux et loyers du canton de Genève. Par jugement du 4 juillet 2013, le tribunal a constaté l'inefficacité du congé. Statuant le 24 février 2014 sur appel des bailleurs, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé le jugement attaqué. Selon l'arrêt cantonal, les bailleurs n'ont pas démontré que le locataire A.C._, qui est en droit d'héberger des proches, a sous-loué l'appartement à sa fille d'une manière contraire à la bonne foi, procédant en réalité à un transfert de bail. Faute de violation du devoir de diligence par le locataire, la cour cantonale juge inefficace le congé anticipé notifié par les bailleurs. C. Les bailleurs interjettent un recours en matière civile. A titre principal, ils demandent au Tribunal fédéral de constater la validité du congé notifié le 10 janvier 2012 pour le 29 février 2012. Ils concluent subsidiairement au renvoi de la cause à l'autorité cantonale pour nouvel arrêt dans le sens des considérants. A.C._ et B.C._ proposent le rejet du recours. Pour le cas où les recourants succomberaient, les intimés réclament le remboursement des frais qu'ils ont dû supporter par 1'620 fr., à savoir le prix de l'intervention de l'ASLOCA qui a rédigé le mémoire de réponse signé par eux-mêmes. Les recourants ont déposé une réplique. Pour sa part, la cour cantonale se réfère aux considérants de son arrêt.