Bid with past tense bade is the modern reflex of the Old English verb biddan 'to ask'. In technical terms this was a Class V strong verb with a weak present. Class V strong verbs have stems with the vowel e followed by a single consonant that is neither a liquid nor a nasal. In those with so-called weak presents the stem vowel is i instead of e, and the final consonant is doubled in the present tense; Old English sittan 'to sit' is another example of this type. The stem vowel changed to æ in the first and third person singular of the past tense: bæd, sæt. In the second person singular and all persons of the plural, however, it changed to ǣ in the past tense: bǣde, sǣte (2 sing.) and bǣdon, sǣton (plur.). (Some dialects had ē instead.) In the past participle the stem vowel was e: (ge)beden, (ge)seten.
The pronunciation [bæd] exactly continues the Old English 1st and 3rd sing. bæd; had the word developed exactly like sit ~ sat, we’d have bid ~ bad instead of bid ~ bade. (Indeed, bad is common in Middle English; the spelling bade for the 1st and 3rd sing. past tense only appears in later Middle English.) The spelling bade, on the other hand, corresponds to the long vowel in the Old English past plural and 2nd sing. Thus, both the pronunciation and the spelling make etymological sense; they just originate from the two different past indicative stems of the Old English verb. Had the past participle developed normally, it would now be *bedden, but in late Middle English the stem vowel was changed to i by analogy with the infinitive and present tense.
English verbal morphology was greatly simplified during the Middle English period, but although some general patterns can be discerned, there are numerous irregularities. Verbs that had two different past tense stems in Old English were reduced to a single past tense stem, but either of the stems might be chosen. Our rode descends from the Old English 1st & 3rd sing. rād, for instance, but our slunk is from sluncon, the plural form of the past tense of OE slincan. Sometimes the vowel of the past participle was assimilated into the past tense, as in the case of our bear, bore, borne; the older past tense bare (‘He bare it bravely’) continues the vowel of the OE past plural bǣron. And, as noted above, sometimes, as with bid, bade, bidden, the standard pronunciation and spelling come from different forms.