Paulino Córdoba (Roberto Blandón), Gabino Roura (Sergio Goyri), Rodolfo Huerta (Francisco Gattorno), and Matías Quiroga (Salvador Sánchez) have been friends since their childhood. As adults, their priorities change and a sin threatens to destroy their friendship. Paulino is the owner of the hacienda El Milagro, which produces and distributes apples, and is married to Rosario (Daniela Castro), with whom he has two children, Lucrecia (Maite Perroni) and César. Rosario has always shown preference for her son and openly rejects her daughter. Rosario's servant, Delfina (Magda Karina), essentially raises Lucrecia alongside her own son, Manuel, and they become like siblings. Lucrecia's best friend is Julián Huerta (Eugenio Siller); they both share the same likes and eventually, as the years pass, come to also share a great love.
Gabino Roura is a clever and ambitious man who kills his wife, Inés (Lucía Méndez), in order to seize her fortune. Gabino manipulates his friends and his children, Carmelo (Armando Araiza) and Teresa (Gabriela Carrillo). He is the owner of the best farming lands, which he rents out to Paulino in order to control the distribution and marketing of the apples.
Rodolfo Huerta is the teacher in the town of San Pedro; he is an upstanding and hard-working man who is married to Justina (Sabine Moussier), a sensual woman who is dissatisfied with her husband's simple lifestyle, and they have two sons, Julián and Josué (Diego Amozurrutia). It is Justina Almada who detonates the serious conflicts that threaten to destroy the friendship between Rodolfo, Paulino, and Gabino. Matías Quiroga, the priest of the town of San Pedro, sees with a heavy heart that his friends are now enemies and are the principal obstacle for Lucrecia and Julián's love.
Unfortunately, Lucrecia and Julián are involved in an accident that costs César his life, and although they are both innocent, Rosario believes them to be responsible. Depression seizes Rosario, who always merely tolerated her daughter's presence. Her resentment forces Paulino to send their daughter away and to distance himself from Rodolfo Huerta's family. As a result of his infamy, Julián is tormented by the denizens of San Pedro, who nickname him El Chamuco (Mexican slang for "the Devil"), the pain of which he must carry for the rest of his life.
Years later, Julián and Lucrecia come across one another, when Lucrecia returns from school, and their love flourishes once more. Although their parents are in opposition, Julián and Lucrecia are prepared to fight for their love, and they count on the support of Delfina, her husband Modesto, and Manuel, who in spite of his love for Lucrecia helps her to be happy with Julián. Lucrecia does not return to San Pedro alone, but accompanied by her cousin, Renata (Jessica Coch), an envious girl who is prepared to seize everything that is Lucrecia's. In San Pedro, Paulino suffers an economic crisis and Gabino demands Lucrecia's hand in marriage, but the very jealous Carmelo steps in and kills his father. Julián is unjustly accused of this crime and Lucrecia is forced to marry Carmelo in order to prevent her father's financial ruin and to save Julián from jail. Julián leaves San Pedro to Veracruz, convinced that Lucrecia betrayed him.
Three years later, Lucrecia lives drowning in sorrow as Carmelo's wife; furthermore, she has lost her land due to Carmelo's ineptitude. In San Pedro, the townspeople talk of the arrival of an outsider who has bought Los Alamos. Lucrecia discovers that this outsider is none other than Julián Huerta, who is now engaged to his ex-girlfriend, Lorena Mendizábal (Altair Jarabo). Carmelo finds out that Julián has returned and a war unleashes between the two for Lucrecia's love. Julián plans on leaving Lorena, but she lies to him that she is pregnant with his child. Meanwhile, Lucrecia gives Carmelo divorce papers, and he responds by ripping up the papers and raping Lucrecia.
When Lorena finally accepts the fact that Julián does not love her anymore, she wants to take revenge by killing them both. One day, while Lucrecia and Julián are in the fields, Lorena tries to run them over, but fails, crashes against a truck, and goes flying out the windshield; consequently, ending up with a disfigured face.
Carmelo, furious that a judge has approved of Lucrecia's request for divorce, takes revenge by burning down the warehouse full of apples that Paulino owns; Paulino is accidentally trapped in the warehouse and dies from smoke inhalation. At his funeral, Lucrecia faints and discovers that she is pregnant but does not know who the father is. Rosario finds out that Lucrecia was raped and for once takes Lucrecia's side; however, when she finds out her daughter is pregnant, she urges her to have an abortion. Carmelo, on the run from the police, kidnaps Lucrecia; later on, Julián saves her. Throughout Lucrecia's rescue, Renata is accidentally shot and dies on the way to the hospital. After returning home, Lucrecia confronts her mother about the hatred Rosario has always shown towards her. Rosario finally admits her secret: Lucrecia is not only Rosario's daughter, but she is also her sister, because Rosario was raped by her father and became pregnant with Lucrecia as a result.
Finally, Lucrecia and Julián are married. Rosario does not attend her daughter's wedding but watches from afar with tears in her eyes. Months later, Lucrecia gives birth to a son whom she names César, in memory of her brother. Lucrecia leaves Rosario with César so that they can spend some time getting to know one another. After Lucrecia returns to the room, she sees her mother and son have fled; she assumes the worst. They soon discover Rosario has left the baby on the bed in Lucrecia's brother's room, and goes to the river where her son died and drowns herself.
Three years later, Lucrecia stands by the river and throws two white roses into the river: one for her brother and one for her mother. Although saddened by the loss of her family, she is joined at the river by her husband and son, whose strong blue eyes reveal him to be Julián's child, and the three live happily ever after.
Actor Valentino Lanús was originally attached to the role of Julián Huerta Almada opposite of Maite Perroni. With Lanús still attached to the role, producer Juan Osorio offered the role of Julián's mother, Justina Aldama de Huerta, to Sabine Moussier, but she turned down the offer, feeling that, at 42, she was too young to play the mother of then-33-year-old Lanús, who had played her love interest in Amar sin límites three years earlier. Actress Joana Benedek, only three years older than Lanús, was instead cast as Justina. However, Lanús eventually backed out of the role, citing a heavy workload as impeding his participation. The role was then recast with Eugenio Siller, then 28, and Moussier replaced Benedek as Justina.
Additionally, the role of Rodolfo Huerta was originally to have been filled by Ernesto Laguardia. However, the actor, who also serves as host on the television program Hoy, did not receive permission from Hoy producer Roberto Romagnoli to take time off to film the novela, so he was replaced with Francisco Gattorno.
Towards the end of the filming of the novela, actress Sabine Moussier was diagnosed with Guillain–Barré syndrome and was forced to alter her shooting schedule on Mi pecado in order to promote her recovery. According to Osorio, Moussier's illness traveled from her spinal cord to her brain, affecting her ability to remember her lines and causing her severe pain. As a result of her worsening health, Moussier was forced to leave the cast of Mi pecado shortly before the completion of filming. Moussier's character, Justina, was not recast, as Osorio had planned in advance for the possibility of her departure and filmed her final scenes in advance.
Mi Pecado premiered on Televisa's El Canal de las Estrellas on June 15, 2009, at 6:00 PM, replacing En Nombre del Amor. The program aired weeknights, and, as a result of its success, was moved to the 7:00 PM time slot on July 27, 2009, replacing Verano de amor while ceding its former time to Camaleones. Mi Pecado ran for a total of 110 episodes, with its finale airing on November 13, 2009; it was replaced by Mar de Amor.