Tomo Hafner begann seine Ausbildung beim HK Jesenice in seiner Geburtsstadt. Obwohl er beim CHL Import Draft 1997 von den Drakkar de Baie-Comeau in der zweiten Runde als insgesamt 50. Spieler ausgewählt worden war, wechselte er nicht nach Kanada, sondern blieb seinem Stammverein bis 2001 treu und spielte für ihn in der slowenischen Eishockeyliga und der Interliga. Im Laufe der Saison 2001/02 wechselte er zum HK Kranjska Gora und anschließend zum HK MK Bled, bevor er 2003 nach Jesenice zurückkehrte. In den Jahren 2005, 2006, 2008, 2009, 2010 und 2011 wurde er mit dem Klub slowenischer Meister. Zudem wurde 2005 und 2006 die Interliga gewonnen. Ab 2006 spielte er mit den Oberkrainern zudem in der Österreichischen Eishockey-Liga. Von einem kurzen Abstecher zu Bloomington PrairieThunder in die International Hockey League 2008 abgesehen, blieb er bis zur finanziell bedingten Einstellung des Spielbetriebs 2012 in Jesenice.
Nach einem kurzen Abstecher zum HK Triglav Kranj verbrachte er die beiden folgenden Jahre im europäischen Ausland, bevor er seine Karriere 2014 bis 2016 beim HK Celje ausklingen ließ. Nach seiner aktiven Laufbahn wurde er 2021 Trainer des italienischen Drittligisten HC Milano Bears. 2022 wurde er Cheftrainer der Old Boys Milano (ebenfalls dritte Liga), die 2023 in den Club Diavoli Rossoneri Sesto aus Sesto San Giovanni integriert wurden und seither als HC Devils Milano firmiert.