Zwischen 2003 und 2005 trat Hafsås in internationalen Juniorenrennen an. Mehrfach erreichte er gute Ergebnisse im Junioren-Europacup, darunter einen zweiten Platz im Sprint von Geilo. Bei der Biathlon-Junioren-Weltmeisterschaft 2003 in Haute-Maurienne gewann er mit der Staffel die Goldmedaille. Bei den Ski-Junioren-Weltmeisterschaften 2004 im norwegischen Stryn wurde er Zehnter über zehn Kilometer in der freien Technik und Fünfter mit der norwegischen Staffel. Bei den Ski-Junioren-Weltmeisterschaften 2005 im finnischen Rovaniemi verpasste er als Vierter über zehn Kilometer in der freien Tedchnik nur knapp Edelmetall. In der Saison 2007/08 wurde Hafsås zunächst im Biathlon-Europacup eingesetzt, wo er mit dem Einzel in Langdorf sowie dem Staffelrennen in Osrblie zwei Siege erzielte. Im Februar 2008 debütierte Hafsås in Pyeongchang im Biathlon-Weltcup. Nach einem 41. Rang zum Einstand im Sprint verbesserte er sich in der Verfolgung auf Platz 21 und gewann erste Weltcuppunkte. Noch in derselben Saison kam er als Neunter eines Sprints in Chanty-Mansijsk erstmals unter die besten zehn. Beim ersten Sprint der Saison 2008/09 in Östersund kam der Norweger bis auf Rang sechs. Zudem gelang Hafsås in Lygna im Dezember 2008 über 30 km Freistil ein Sieg im Skilanglauf-Scandinavian-Cup.
Sein erster Sieg in einem Weltcup-Wettbewerb gelang Hafsås zum Auftakt des Langlauf-Weltcups 2009/10. In Beitostølen gewann er mit 0,2 Sekunden Vorsprung vor Vincent Vittoz den 15-km-Wettbewerb in der freien Technik.[1] Bereits einen Tag später konnte Hafsås mit der norwegischen Staffel seinen zweiten Weltcupsieg feiern.[2]
Nach dem Biathlon-Weltcup in Pokljuka entschied sich Hafsås, in der weiteren Saison 2009/10 keinen Biathlon-Wettkampf mehr zu bestreiten und sich stattdessen auf den Langlauf zu konzentrieren.[3] Bei den Olympischen Winterspielen 2010 wurde er aber nur 42. im Rennen über 15 Kilometer in der freien Technik. Anschließend startete Hafsås noch einmal beim Biathlon-Weltcup in Kontiolahti. Aber auch im Skilanglauf-Weltcup wurde er zuletzt im November 2011 in Sjusjøen eingesetzt, als er 38. wurde. Im Januar 2012 gewann Hafsås beim Sprint in Haute Maurienne sein drittes Rennen im IBU-Cup.
Hafsås' Bruder Eirik war mehrere Jahre auch Mitglied des norwegischen Nationalteams, konnte aber bis zu seinem Rücktritt keine größeren Erfolge im Europacup feiern.