Tobias Harris hit a 3-pointer with 1:27 remaining that all but sealed it after Kevin Durant fueled a late Warriors rally.
Durant hit consecutive 3-pointers to get Golden State back within 101-94 then dunked the next time down to make it 103-96 with 4:40 to go before finding Thompson for a 3 on the next possession.
Durant's dunk at 2:12 made it 108-105. Curry had a steal and drive with 1:51 left but couldn't convert, then missed a 3 as Golden State kept possession. Durant missed from deep the next time down.
The Warriors lost only twice total at Oracle Arena in both their 2015 championship year and again in the 73-win season that followed, then just five times at home on the way to another title this year.
Klay Thompson scored 29 and became the 11th player in franchise history to eclipse 9,000 career points. Durant wound up with 28 points and Curry 27.
Stanley Johnson's dunk with 6:56 left put the Pistons up 98-88.
The defending champions looked efficient again initially, passing well and making better decisions, but they were sloppy down the stretch. Golden State shot at a 63.5-percent clip midway through the third quarter before allowing the Pistons back in the game.
Reggie Jackson scored 18 of his 22 points in the first half and Bradley made five 3-pointers for the Pistons, who impressed on the second night of a SoCal-NorCal back-to-back.
Detroit beat the Clippers 95-87 on Saturday to hand Los Angeles its first defeat and leaving no more NBA unbeatens.
The Pistons snapped a seven-game losing streak on Golden State's home floor.
With 11 blocks, Golden State has gone seven straight games with at least seven blocks.
Thompson is donating $69,000 to Northern California fire victims and relief efforts from the devastating wildfires in the North Bay.
He pledged 1,000 through "Points With Purpose" for each point he scored during this three-game homestand.
"I love that he's doing that on his own," coach Steve Kerr said. "It shows how much he cares, it shows how much he's matured over the years. This was something he came up with. He's gone for it."
Green was fined $25,000 for his actions in a fight with Washington's Bradley Beal on Friday night that led to both players being ejected. Beal received a $50,000 fine. Also, Wizards F Kelly Oubre Jr. was fined $15,000 for entering the altercation. With 19.5 seconds left in the second quarter, Beal held the front of Green's jersey with his left hand while grabbing Green around the jaw with his right. That enraged Green, and they became entangled with arms around each other. It was Green's second technical of the game.
"A little confused. I don't know how you get fined 25 grand for being attacked. It seemed like maybe there's some prior reputation involved," Kerr said. "There's some curious stuff in there. It looked to me like Oubre came out there running into the crowd and caused a lot more. Draymond he was the one who was attacked in the first place. So it seems like maybe those fines could have been reversed."
Pistons: Detroit rallied from 14 down — 68-54 midway through the third — to go ahead by 13 then held off a Warriors flurry. ... The Pistons shot 12 for 27 from 3-point range and made all 17 of their free throws.
Warriors: Curry hit a career-best 54 straight free throws dating to his final two last season — 52 in a row to begin this season when he missed a technical shot in the third. ... Rookie Jordan Bell was inactive for a second straight game, with Kerr realizing it's going to be a tough choice every night given Kevon Looney's improvements and a need for big man JaVale McGee based on matchups. ... The Warriors had gone two straight games with 17 turnovers before finishing with 25 Sunday. ... Golden State dropped to 2-1 against the Eastern Conference this season — all at Oracle Arena — after it went 14-1 at home vs. the East last season.
Pistons: At the Lakers on Tuesday.