The hosts fell behind after eight minutes with Giacomo Raspadori drilling a shot through goalkeeper Samir Handanovic, before Gianluca Scamacca headed into the net when unmarked to double Sassuolo's lead.
Inter were all at sea, and could have gone into the break 3-0 down when Domenico Berardi's effort hit the crossbar.
After the break, the hosts piled on the pressure, with goalkeeper Andrea Consigli making several fine saves to keep the visitors in a commanding position.
Sassuolo should have put the game to bed with late chances, but two goals were enough as Inter remained second on 54 points, two behind leaders AC Milan. Sassuolo climbed to 11th.
"I am very angry with how we played," Inter coach Simone Inzaghi told DAZN. "We had three days since Wednesday's game [against Liverpool] and we talked about the fact Sassuolo beat Juventus and Milan away -- we had to be wary.
"We tried to do everything in the second half, created so many chances and were unlucky, but the fact remains we should've had a different approach.
"We will analyse the situation. We know there are 13 games to go, we are all up there and want to keep going forward. The fact is, a team that wants to win the Scudetto cannot get the approach as wrong as we did today."
Inter came into the contest having won one of their last four in all competitions, but they were buoyed by Milan dropping points at bottom side Salernitana on Saturday.
Right from the off in the San Siro, however, they were second best against a Sassuolo side without a Serie A clean sheet since September.
While they fired off 29 shots in the match, it was Sassuolo who deserved the win, having created the much clearer chances throughout the encounter.
Inter did think they had battled back into the contest in stoppage time, but to complete a miserable evening for Inzaghi's men, Stefan de Vrij's header was ruled out after a VAR review for an earlier handball.