Karna lied to Parashurama that he was a brahmana in order to study under him, since Parashurama had taken vow to teach only brahmanas and not kshatriyas.
One day Rama of great intelligence, while roving with Karna in the vicinity or his retreat, felt very weak in consequence of the fasts he had undergone. From affection begotten by confidence, the tired son of Jamadagni placing his head on Karna's lap, slept soundly, White his preceptor was thus sleeping (with head) on his lap, a frightful worm, whose bite was very painful and which subsisted on phlegm and fat and flesh and blood, approached the presence of Karna. That blood-sucking worm, approaching Karna's thigh, began to pierce it. Through fear of (awaking) his preceptor, Karna became unable to either throw away or kill that worm. Though his limb was bored through by that worm, O Bharata, the son of Surya, lest his preceptor should awake, suffered it to do its pleasure. Though the pain was intolerable, Karna bore it with heroic patience, and continued to hold Bhrigu's son on his lap, without quivering in the least and without manifesting any sign of pain. When at last Karna's blood touched the body of Rama of great energy, the latter awoke and said these words in fear, 'Alas, I have been made impure! What is this that thou art doing, Tell me, casting off all fear, what is the truth of this matter!' Then Karna informed him of that worm's bite. Rama saw that worm which resembled a hog in shape. It had eight feet and very keen teeth, and it was covered with bristles that were all pointed like needles. Called by the name of Alarka, its limbs were then shrunk (with fear). As soon as Rama cast his, eyes on it, the worm gave up its life-breath, melting in that blood which it had drawn. All this seemed wonderful. Source
One day, when Parashurama was resting on Karna's lap, Karna patiently withstood immense pain of an insect bite so as to not wake up his guru. Parashurama woke up and realized no Brahmana could withstand such pain. After finding out the truth, he cursed Karna that in crucial moments of fight, he would forget astra mantras.
So, in 3 major fights (Draupadi Swayamvara, Virata Go-grahana, Mahabharata), Karna couldn't win.
Nevertheless, there could be another aspect to his weakness, when compared to Arjuna.
Both in Ramayana & Mahabharata, the amshas or sons of Surya (Sugriva, Karna) and Indra (Vali, Arjuna) fight against each other.
Indra is stronger than Surya in parakrama e.g. Vali is stronger than Sugriva and Arjuna is stronger than Karna.
But, as Bhagavan clearly demonstrates, the side he is on will win irrespective of strength of fighter :
Source : Padma Purana Srishti Khanda Chapter 14. The See verses 40 to 73