Marcus Green scored 22 points, and Purdue beat Ohio State 75-68 on Saturday afternoon to end the Buckeyes' 19-game Big Ten winning streak.
It was Green's first double-figures scoring game of the season. He fouled out with one minute to play and got a standing ovation as he left the court.
Keaton Grant scored 14 points, and E'Twaun Moore added 11 points and eight rebounds for Purdue (11-5, 2-1 Big Ten), which was coming off a 78-75 loss at No. 6 Michigan State on Tuesday.
Jamar Butler scored 26 points and made a career-high six 3-pointers for Ohio State (12-4, 3-1). Kosta Koufos added 12 points and nine rebounds for the Buckeyes.
Ohio State had won its past eight games this season, and had won eight in a row in the series against Purdue. The Boilermakers hadn't beaten the Buckeyes since Jan. 29, 2003.
Ohio State led 36-29 at halftime, but Purdue started the second half on a 8-0 run that included two baskets by Green. The second of those, a baseline jumper, gave the Boilermakers a 37-36 lead with 16:24 to play.
Ohio State led 46-44 before Grant made two free throws, a 3-pointer and a layup to give the Boilermakers a 51-46 lead with 10 minutes to play.
Butler made back-to-back 3-pointers to help Ohio State take a 52-51 lead. Purdue regained the momentum when Robbie Hummel converted a four-point play to give the Boilermakers a 55-53 lead with 6:55 left.
Purdue led 62-58 when Green scored on a fast break layup. Ohio State's Othello Hunter was called for an illegal screen, then a technical foul for disagreeing with the call. Hummel made two free throws to give Purdue a 66-58 lead with 2:42 remaining.
Ohio State stormed back in the final minute. Butler and Jon Diebler each made two free throws, and Koufos scored on a tip-in with 29 seconds left to cut Purdue's lead to 71-68.
The Boilermakers made just 21 of 33 free throws in the game, but Moore and Grant each made two free throws in the final 29 seconds to seal the win.