Adam Szalai clipped the ball over the bar in the first minute as both teams looked to attack.
However, Hoffenheim took the lead with 21 minutes on the clock. Kai Herdling ran with the ball, before finding the bottom corner with a low shot.
Jefferson Farfan then had two chances to equalise for the hosts, but he shot wide from the first and saw the second blocked after good defending.
Firmino heaped even more misery on the home fans, making it 3-0 with a well-struck shot before half time.
Both teams came out strongly in the second half as Hoffenheim searched for a fourth goal.
However, Schalke came back into the contest when Farfan picked up the ball from Julian Draxler and found the bottom corner.
Kevin-Prince Boateng then missed a good chance to narrow the deficit to one goal.