史载杨坚出自关中高门弘农杨氏,自称是东汉太尉杨震十四世孙,其四世祖杨元寿被北魏任命为武川镇司马。
其父杨忠跟随北周文帝宇文泰起义关西,因功赐姓普六茹氏,官至柱国、大司空,封随国公。
死后追赠太保,谥号桓。不过据陈寅恪的考证,杨坚家族可能是山东寒族,其弘农杨氏的身份应出于伪托;而所谓杨元寿留镇武川亦是宇文泰为笼络部下感情而虚构之事。
西魏大统七年六月癸丑夜,杨忠之妻吕氏于冯翊般若寺生下了杨坚,据说当时紫气充庭,《隋书》记载。
当时有一个尼姑对吕氏说,杨坚此人不可与常人一样抚养,所以尼将杨坚带到别馆,亲自抚养,幼年的杨坚为人深沉少言,刚刚进入太学的时候,即使是十分亲密的人也不敢戏弄。
西魏恭帝二年杨坚十四岁时,京兆尹薛善征辟他为功曹,翌年因为其父杨忠的功劳被授为散骑常侍、车骑大将军、仪同三司,封成纪县公。
西魏恭帝四年封为骠骑大将军,加开府,北周武成元年北周明帝即位,授杨坚为右小宫伯,进封大兴郡公。
武成二年周武帝宇文邕即位,杨坚任小宫伯,出任为随州刺史,进位大将军。后来被调任京城,在其母身边侍疾三年,昼夜不离左右,都称他纯孝。
当时宇文护执掌朝政,非常忌惮杨坚,多次想要谋害他,幸而有大将军侯伏、侯寿等人的保护才得以幸免。
天和三年父亲杨忠死后,杨坚承袭随国公的爵位,周武帝聘杨坚的长女杨丽华为皇太子妃,对杨坚更加礼重。
齐王宇文宪曾对武帝说普六茹坚相貌非常,我每次见到他,都不觉自失,我怕他不会久居人下,要早早地除掉他。
武帝说杨坚此人只可以作为一个将领,内史王轨突然对武帝说皇太子赟将来并非社稷之主,普六茹坚貌有反相。
武帝十分不悦说帝王自有天命在,旁人又能奈何,杨坚知道后十分畏惧,行事小心谨慎,以韬光养晦。
建德四年杨坚率水军三万,于河桥大败北齐的军队,建德五年杨坚跟从周武帝亲征平齐,进位为柱国,与齐王宇文宪一起在冀州大破齐任城王高湝,被封为定州总管,很快又转任亳州总管。
宣政元年六月周武帝宇文邕死后,太子宇文赟即位,杨坚的长女杨丽华被封为皇后,杨坚因为是皇后之父又晋升为柱国大将军、大司马。
大象初年,杨坚官任大后丞、右司武,很快转任大前疑,周宣帝每次外出巡幸,都让杨坚在朝内留守,当时周宣帝制定《刑经圣制》,法令极其严苛。
杨坚因为法令严酷,不是教化约束臣民的好办法,向周宣帝强烈进谏,周宣帝不听。
杨坚的地位和威望日益做大,周宣帝十分忌惮,周宣帝有四位宠幸的姬妾,与杨丽华一起为皇后,诸家争宠,相互诋毁对方。
周宣帝发怒之时,对皇后杨丽华说一定要将你家灭族,于是召杨坚入宫,对左右侍卫说杨坚的脸色稍有变化,就杀了他。
不料杨坚到了宫内,神情和脸色自若,于是周宣帝没能杀了他。