Filipino-American Viloria, 32, was put under pressure in the second half of the fight by 22-year-old Mexican opponent Estrada, who moves to 23-2 (18 KOs), and was hanging on by the end with a cut around his left eye.
Viloria is now 32-4 (19 KOs). He looked to counter-punch his way around the ring and had particular success in round three, but Estrada found avenues on the inside to hurt him as the fight wore on.
The judges scored the bout 116-111 117-111 113-115.
Roman 'Rocky' Martinez defended his WBO junior lightweight title with a split decision against Diego Magdaleno.
Puerto Rican Martinez (27-1, 16 KOs) was stunned by a barrage of punches in the third round, but stayed on his feet and knocked the Mexican-American down in the following round.
Magdaleno (23-1, 9 KOs) had Martinez in trouble again at the end of the eighth, but once more the 30-year-old Martinez fought back, opening a cut above his opponent's eye in the ninth.
Highly-rated Magdaleno, 26, disappointed overall but lost narrowly in the split decision. Two judges had it for Martinez (115-112 114-113), with one giving it to Magdaleno (116-111).