Hans Granfelt nahm an den Olympischen Spielen 1920 in Antwerpen im Diskuswurf teil, bei dem er ohne gültige Weite in der Qualifikation scheiterte. Bei der Eröffnungsfeier der Spiele war er Fahnenträger der schwedischen Delegation. 1931 in Wien und 1937 in Paris gewann er jeweils mit der Degen-Mannschaft die Bronzemedaille bei den Weltmeisterschaften. Bei den Olympischen Spielen 1936 in Berlin trat Granfelt im Fechten an. Gemeinsam mit Birger Cederin, Hans Drakenberg, Gustaf Dyrssen, Gustav Almgren und Sven Thofelt erreichte er im Mannschaftswettbewerb die Finalrunde, die die schwedische Equipe hinter Italien und vor Frankreich und Deutschland auf dem Silberrang abschloss. In der Einzelkonkurrenz schied er in der Halbfinalrunde aus. Auf nationaler Ebene gewann Granfelt achtmal die schwedische Meisterschaft mit dem Säbel sowie zweimal mit dem Degen.