They remain level on points with Bayern Munich at the Bundesliga summit.
The Japan midfielder opened the scoring for Dortmund in the 16th minute and Kevin Grosskreutz doubled their advantage after 31 minutes.
Kagawa put the result beyond doubt with his second goal in the 55th minute, before Fabian Johnson pulled one back eight minutes later for the visitors.
Hoffenheim, who were playing their first match without top striker Vedad Ibisevic following his switch to Stuttgart, have collected just one victory in their last nine matches.
Dortmund started with a cluster of chances in the first three minutes, including two for Robert Lewandowski and one for Sebastian Kehl.
The hosts finally grabbed the lead in the 16th minute courtesy of a mistake by Hoffenheim midfielder Sebastian Rudy. He was caught in possession by Kehl and he supplied Kagawa, who dribbled his way through the rest of the defence and fired home from 15 yards.
Dortmund went two up after 31 minutes with Edson Braafheid losing the ball to Kagawa, who played two one-twos with Jakub Blaszczykowski before the Poland international crossed into the middle for Grosskreutz to poke home.
The champions looked set to make it 3-0 on the stroke of half-time but Grosskreutz was adjudged offside when he converted a cross.
Braafheid misplaced another ball in the 55th minute which led to Dortmund's third goal. Kagawa fed Grosskreutz, who back-heeled for Kagawa to finish off Hoffenheim.
Hoffenheim reduced the deficit eight minutes later when Johnson struck home Braafheid's cross, but it was scant consolation for the visitors.