The early action promised much with both fighters happy to take the front foot, but it was Marquez who landed the cleaner blows, although Bradley returned with a few of his own.
The champion found the mark with a punishing body shot early in the second round, but referee seemed to call it low. The round ended with a frenzy in the corner, with both men throwing hayemakers.
This time it was the younger man who landed the bigger shots but the bell sounded, allowing the Mexican to catch a breath.
The fighters exchanged rounds in three and four, and Bradley tried to press the issue in the fifth, but ended up walking onto a few sharp ones.
Marquez landed a vicious body shot late in the fifth, although Bradley quickly countered. The round finished with both men goading each other by sticking their chins out. That brought a rapturous reception from the crowd at the fifth bell.
The fight was still close heading into the seventh round, but it was Bradley looking the more comfortable. Just as the champion seemed to be pulling away on the scorecards, the 40-year-old landed a few heavy punches to shade a round back.
He looked the more menacing early in the 10th but Bradley turned the tide with a few well-timed shots, forcing him to tuck up. He still managed to land a stiff right before the bell, although it did not seem to trouble the American.
Bradley looked to be just ahead on the scorecards heading into the final round but a big finish from Marquez finished the stronger, bringing the 13,000 crowd to their feet.
With seconds left on the clock, Bradley nearly put Marquez down with a swift left as the two combatants finished with a flurry.
Two of the judges scored the bout 115-113 for Marquez and Bradley, but the third had it 116-112 in favour of the champion, whose unbeaten record now extends to 31 fights.