The victory gave the Cubs the rubber match of a three-game inter-league series against the American League West-leading Rangers.
Silva lasted 5 1/3 innings, allowing three runs on six hits, walking one and striking out one. Carlos Marmol notched his ninth save of the year, striking out three Rangers in the final frame to nail down the win.
C.J. Wilson (3-2) absorbed the loss for Texas, yielding five runs on seven hits over 5 2/3 innings.
Michael Young connected for a two-run homer and Julio Borbon went 2-for-3 with an RBI for the Rangers.