包拯生於宋真宗鹹平二年(999年),於宋仁宗天聖五年(1027年)考中進士,被授任爲大理評事,出任建昌縣(今江西永修)知縣。因父母年邁,包拯請求在合肥附近就職,遂改授和州(今安徽和縣)監稅,父母又不想讓他離開,包拯就辭去官職,回家贍養父母。
幾年之後,他的父母相繼去世,包拯在雙親的墓旁築起草廬,直到守喪期滿,還是徘徊猶豫、不忍離去,同鄉父老多次前來勸慰勉勵。直到景祐四年(1037年)包拯才赴京聽選,獲授天長(今屬安徽)知縣。
慶曆元年(1041年),包拯調任端州(今廣東肇慶)知府。端州出產硯臺,此前的知府趁着進貢大都斂取是貢數幾十倍的硯臺,來贈送給當朝權貴。包拯命令製造的硯臺僅僅滿足貢數,他在任滿一年沒拿一方硯臺回家。
慶曆三年(1043年),入京任殿中丞。後經御史中丞王拱辰舉薦,於十一月被任命爲監察御史裡行,改任監察御史。任監察御史及知諫院時,爲肅正綱紀,懲處貪官贓吏,他彈劾販賣私鹽以牟取暴利的淮南轉運按察使張可久、役使兵士爲自己織造一千六百餘匹駝毛緞子的汾州(今山西汾陽)知州任弁及監守自盜的仁宗親信太監閻士良等,其中影響最大的是彈劾王逵。王逵曾數任轉運使,巧立名目盤剝百姓錢物。
激起民變後,又派兵捕捉,濫用酷刑,慘遭其殺害者不計其數,因而民憤極大。但王逵與宰相陳執中、賈昌朝關係密切,又得宋仁宗青睞,故有恃無恐。爲此,包拯連續七次上章彈劾,最後一次更直接指責仁宗說:“今乃不恤人言,固用酷吏,於一王逵則幸矣,如一路不幸何!”其言激切剛直,朝野震動,輿論洶洶,朝廷終於罷免了王逵。包拯又曾經建議說:“國家每年向契丹交納財物(歲幣),不是抵禦戎人的計策,應該操練軍隊、挑選將領,致力於充實邊境守備。”又請求重視門下封還駁正的制度,以及廢黜貪官污吏不得做官,選擇郡守縣宰,推行考覈試用補任恩蔭子弟的方法。當時各道轉運加按察使,他們上奏彈劾官吏大多指摘細小過失,注重苛刻嚴察相互標榜,官吏自覺不安,包拯因此請求免去按察使。
慶曆五年(1045年)八月,包拯擔任契丹正旦使,出使遼朝,完成了使命回朝後,包拯根據自己在遼朝的觀察,上疏建議朝廷挑選“素習邊事”的將領守邊,並重視代州(今山西忻州代縣)的將領選擇,以應對邊境突發的情況。此後歷任三司戶部判官,於慶曆六年(1046年)六月左右出京任京東路(治今河南商丘)轉運使。
慶曆七年(1047年)四月,改任尚書工部員外郎、直集賢院、陝西轉運使。慶曆八年(1048年)五月二日,包拯調任河北路(治今河北大名)轉運使,六月二十二日,入朝任三司戶部副使。秦隴斜谷務所的造船木材,一概向百姓徵收索取;又七個州交納河橋竹索的賦稅,一般有幾十萬,包拯都奏請加以廢除。
遼朝在鄰近邊塞地區集結軍隊,邊境州郡漸加戒備,命令包拯去河北調發軍糧。包拯說:“漳河地區肥沃的土壤,百姓不能耕種,邢、沼、趙三州農田一萬五千頃,一概用來牧馬,請求把這些全都分給百姓。”聽從他的意見。解州鹽法規定使百姓困竭,包拯前去加以經營管理,請求一概與商販流通交換。
皇祐二年(1050年),包拯受任爲天章閣待制、知諫院。他多次論述斥責權貴得寵大臣,請求免去一切由內廷施予的曲意恩賜。又依次遞上唐魏徵的三條奏疏,希望放在座位右側,作爲借鑑。又上言天子應當明於聽取採納,分辨朋黨,愛惜人才,不堅持先入爲主的說辭,一共七件事;請求廢除苛刻不寬厚的做法,抑制僥倖投機得官,正刑法明禁令,戒除興建勞作,禁丘妖言妄說。朝廷大多加以施行。
當時,張貴妃(溫成皇后)的父親張堯佐被任命爲淮康軍(治今河南汝南)節度使、羣牧制置使、宣徽南院使、景靈宮使,右司諫張擇行、唐介與包拯一起奏論此事,認爲應追奪對張堯佐的任命,或者選擇宣徽、節度中的一個授予。最終,張堯佐辭去了宣徽使、景靈宮使之職。
皇祐四年(1052年)十月,除任龍圖閣直學士、河北都轉運使。曾經提議太平無事時把軍隊調到內地,沒有答覆。至此時,請求:“解除河北駐守軍隊,把他們分佈在黃河以南的兗、鄲、齊、濮、曹、濟各郡,如果有緊急情況,沒有誤時的憂慮。如果說駐守軍隊不能立刻削減,請求訓練民兵,稍加供給乾糧,每年的費用,不到駐守軍隊一個月的開支,一個州的賦稅,那麼供給的人數就多了。”沒有答覆。數月後,轉任高陽關(今河北高陽東)路安撫使。同年七月,調知瀛州,各州用官府的錢做買賣,年累計虧負十多萬,都上奏加以除去。因喪子請求任政務清簡的州郡任職,遂改知揚州,又轉知廬州,並加刑部郎中。
至和二年(1055年)十二月,包拯因擔保推薦官員失誤獲罪,貶官兵部員外郎、知池州(今安徽池州)。嘉祐元年(1056年)八月,復職刑部郎中、知江寧府。同年十二月,被召任權知開封府,遷升右司郎中。
嘉祐三年(1058年)六月,升爲右諫議大夫、權任御史中丞。包拯上奏說:“太子的位置空缺已經很久了,天下人都爲此感到擔憂,陛下這麼長久地不作出決定,是爲什麼呢?”仁宗問他說:“你認爲立誰爲好呢?”包拯回答道:“臣下無能,還沒有考慮,臣請求早立太子,是爲宗廟萬世之大計着想的。陛下問臣想立誰,這是懷疑臣。臣已是六十歲的人了,又沒有兒子,並不是爲自己和後代邀寵考慮的啊!”仁宗聽了大爲高興,說:“這件事還要慢慢商議。”
他請求裁減內侍,減少不必要的費用,按條文督促各路監司盡忠職守,御史府可以自己舉薦所屬官員,減少官吏一年的休假日期,這些建議都得以施行。七月,以權御史中丞職領轉運使、提點刑獄考課院。
嘉祐四年(1059年),時任三司使的張方平由於買土豪的財產,被包拯上章將其彈劾免官;由宋祁接任,包拯又彈劾他;宋祁被免後,就由包拯以樞密直學士之職暫任三司使。對此,歐陽修說:“包拯是所謂牽牛踩踏了田而奪了人家的牛(蹊田奪牛),處罰已經很重了,可他又貪圖肥缺來做那個職務,不也是過分了嗎?”包拯因此待在家裡,以躲避代理三司使的任命,仁宗不許。許久後,包拯纔出府任職。
嘉祐六年(1061年)三月,升任給事中,正式擔任三司使。數日後,拜樞密副使。不久,調任禮部侍郎,但他推辭不受。嘉祐七年(1062年)五月,包拯在樞密院視事時,突然得病。同月二十四日(7月3日),包拯病逝,終年六十四歲。仁宗親臨弔唁,併爲其輟朝一日。追贈禮部尚書,諡號孝肅。