Miami is eight games away from equaling the longest winning streak in NBA history, the run of 33 games established by the 1971-72 Los Angeles Lakers.
The Heat rallied from 27 points down against Cleveland to keep the streak alive on Wednesday and fell behind the Pistons by 11 during the first half.
James, however, hit 12-of-15 from the field and scored 29 points while pulling down eight rebounds and handing out eight assists.
Dwyane Wade added 19 points. Miami last lost Feb. 1 in a trip to Indiana.
Detroit lost its 10th in a row. Greg Monroe scored 23 points and seized 15 rebounds for the Pistons, who shot just 40 percent from the field compared with Miami's 55.
Miami will be heavily favored to keep the streak going with games against Charlotte and Orlando Sunday and Monday.