A wounded woman (Ramya Krishnan) carrying a baby in her arms, wading through a river under a massive waterfall is being chased by a bunch of soldiers. After attacking a few, with no where to go, in order to save the child, who she names Mahendra Baahubali, she decides to drown herself in the water while holding the child above it. She proclaims she will not let anything happen to the child come what may. At sunrise, a few villagers spot the child stranded alive in the middle of a river. Sanga(Rohini) and her husband rescue the infant and raise him as their own.
The boy grows up to be the mighty Shivudu (Prabhas), who aspires to climb the waterfall to see what lies up there. His curiosity irks his mother as it could be dangerous. After many failed attempts he finally makes it to the top. Looking for the owner (Tamannaah as Avantika) of a mysterious mask which falls on his lap, he discovers unlike the lady of his dreams, she is a rebellious warrior fighting against the tyrannical king Bhallala Deva (Rana Daggubati), who has captured queen Devasena (Anushka Shetty) and has been torturing her for the past 25 years. Her group indulges in guerrilla warfare against the king to rescue the queen.
While initially she doubts Shiva’s intentions, on seeing her mask with him, she realises he is innocent. The two fall in love and Shiva pledges to help her in her mission. He sneaks into Bhallala Deva’s Mahishmati kingdom to rescue Devasena but gets caught. The king’s loyal guard Kattapa (Sathyaraj) attacks Shivudu but given his strength, and after seeing his face realises Shivudu is the late king Amarendra Bahubaali’s (Prabhas) son and deserving heir to the Mahishmati kingdom.
The story then goes into a flashback showing Amarendra Baahubali as a noble king and Bhallala Deva his cousin. Though Bhallaladeva’s father Bajjala Deva (Nassar) is the elder brother, Shivudu’s grandfather is crowned as the king since he is more worthy. Bajjala resents this decision as he thinks this happened because of his handicap. After his brother (the king) dies, Bajjala wishes his son Bhallala to be the new emperor but the late king’s wife before dying gives birth to Amarendra Baahubali, another heir to the kingdom.
Bajjala’s wife Sivagami (Ramya Krishnan) is feisty, fair and impartial. She raises both the children Bhallaladeva and Baahubali as her own and proclaims that whoever proves to be more deserving will be crowned as the new king. Bajjala and Bhallala’s tactics fail as after witnessing an epic battle against their tribal rivals, Sivagami announces Baahubali to be the new king as he cares for his people and announces that Bhallaladeva is to be made into the commander-in-chief of the army.
While sharing this truth, Kattapa is interrupted by Shiva who asks that if his father was so strong who killed him. Kattapa, (with tears in his eyes) reveals that he was the one who betrayed by killing his father.