Shylock shows more villainous characteristics than Antonio. This is in keeping with the prevailing racial prejudice of the time which portrayed Jews as greedy and money-grabbing. Whereas Antonio is given to us a kind, generous soul who'll do anything to help out a friend in trouble, Shylock comes across as nasty and vindictive, determined to destroy Antonio for his failure to repay the money he owes him, come what may.
Such is Shylock's villainy that it gets to the stage where he's no longer interested in getting his money back; he actually wants Antonio to suffer. In destroying Antonio, Shylock is getting back at the whole of Christendom for the abominable way that he, and all other Jews, have been treated.
Shylock's motivation for exacting revenge makes him marginally less villainous and more sympathetic. After all, he's subject to appalling levels of persecution and personal abuse on a daily basis simply because he's a Jew. Even so, there's no doubt that Shylock remains very much the villain of the piece, whatever justifications he might offer for his single-minded obsession with destroying Antonio.
Although Antonio himself has certain negative characteristics, most notably an excessive generosity to his improvident friend Bassanio, they can hardly be described as villainous. If we want to find villainy in The Merchant of Venice, we need look no further than Shylock.