The Yankees, who have lost five straight, trail surging Toronto by a half-game in the division, falling out of the top spot for the first time since July 2. New York has scored six runs in its losing streak.
Abraham Almonte's RBI single broke a 1-all tie in the sixth and Cleveland won its fourth straight.
Salazar (10-6) was pulled after issuing one-out walks to to Brett Gardner and Chase Headley in the eighth, but Cody Allen got Alex Rodriguez to hit into a double play to end the inning. Salazar gave up one run in 7 1-3 innings.
Allen struck out Mark Teixeira to start the ninth but threw a wild pitch on strike three allowing Brian McCann to reach first. Carlos Beltran lined out to left field and Didi Gregorius struck out as Allen earned his 23rd save.
CC Sabathia (4-9) allowed two runs in six innings.
The teams played 16 innings Tuesday night with the Indians winning 5-4 in a game that lasted 5 hours, 4 minutes.
McCann's homer put New York ahead in the second, but rookie Francisco Lindor's RBI single in the fifth tied it.
Carlos Santana and Jerry Sands singled to start the sixth. After a force play at second, Almonte, a former Yankees farmhand acquired from San Diego on July 31, singled up the middle putting Cleveland ahead.
New York's offensive problems continued against Salazar. McCann broke an 0-for-16 slump with his home run, but that's all the Yankees could generate against the right-hander, who held the Yankees to four hits and struck out eight.
The Yankees threatened in the seventh. Teixeira led off with a single and took third on Beltran's one-out double, but New York failed to score. Salazar caught Gregorius' popup in front of home plate and struck out Chris Young.