Both the Bhagavad Gita and the Vishnu Sahasranama are found in the Mahabharata. But the Vishnu Sahasranama is more commonly recited than the Bhagavad Gita. What is the reason?
The answer can be inferred from an episode in the Mahabharata. Arjuna has vowed that he will kill anyone who insults his bow. In the course of the war, Yudishtra speaks disparagingly of Arjuna’s bow. So Arjuna is in the sorry state of having to kill his own brother.
Krishna suggests a way out. He tells Arjuna to speak disrespectfully to Yudishtra. Speaking disrespectfully to elders is equal to killing them, said Akkarakkani Srinidhi, in a discourse. So Arjuna has now technically killed Yudishtra and kept his vow. But Arjuna now has to atone for the sin of killing his brother. Krishna advises him to praise himself. Self praise is equal to suicide. So by praising himself, Arjuna technically commits suicide!
But Lord Krishna, who gave such advice to Arjuna, praised Himself in the Bhagavad Gita. He had to, because He had to make people aware that He was the Supreme One and that they must aspire to reach His feet. So He had no option but to speak of Himself.
The Vishnu Sahasranama also points to Him as the Supreme One, but it came not from Him, but from Bhishma. So it can be argued, that the Sahasranama is superior to the Gita, because in the Gita we have the Supreme One praising the Supreme One. But in the Vishnu Sahasranama, we have a devotee praising the Supreme One. That is why the Vishnu Sahasranama is more popular than the Bhagavad Gita, and is recited by more people. The Vishnu Sahasranama has a further greatness. When Bhishma recited it, the Lord Himself was a listener.