Karlsson satte igång attacken, som gav Kevin Labanc chansen att göra 2-0.
Erik tog fart bakom egen kasse och hittade Labanc i mittzonen och efter ett växelspel med Tomas Hertl kunde Labanc ta sig in på Calgarykassen och från den högra tekningscirkeln prickskjuta i krysset bakom Cam Talbot.
Fullträffen kom i mitten av den första perioden.
1-0-målet gjordes av Timo Meir och det var schweizarens första mål i höst.
Elias Lindholm reducerade för Flames efter knappt sju minuter av mittenperioden när han styrde in ett skott från backen T.J. Brodie.
Det var Lindholms tredje mål och fjärde poäng på de inledande sex matcherna.
Erik Karlsson väntar på första målet
Men närmare än så kom inte Calgary.
Innan den andra perioden var över hade Tomas Hertl gjort 3-1 för Sharks och det resultatet stod sig matchtiden ut.
Erik Karlsson väntar fortfarande på att få göra första målet för säsongen, han har tre assist så här långt efter fem omgångar.
San Jose tog sin första seger i bortamötet med Chicago tidigare i veckan.