Earnshaw's first tally came 3 minutes into the game when he intercepted an errant pass from Kansas City's Matt Besler and put the ball past defenseless SKC goalkeeper Jimmy Nielsen.
The Welsh forward doubled the lead for Toronto (1-1-0) on a 21st-minute penalty kick after Paulo Nagamura tripped up TFC midfielder John Bostock in the box.
Claudio Bieler scored off a feed from C.J. Sapong in the 77th minute for Kansas City (1-1-0).
Man behind Doritos Locos Tacos passed away on Thanksgiving
Caroline Berg Eriksen: Soccer player's wife triggers debate with post-birth selfie